My systems always seem to have excess service pack and hotfix uninstall folders, and registry entries, mostly from my participation in the betas.
Prior to installing a new service pack release, I use DelHotFix.bat to delete all previous service pack and hotfix uninstall folders, and the Control Panel / Add or Remove Programs registry entries.
NOTE: I am NOT recommending that you do this, but you could run the DelHotFix.bat in display mode.
The syntax for using DelHotFix.bat is:
DelHotFix \[/D\]
Where /D is an optional switch that causes the folder and registry key deletion.
DelHotFix.bat contains:
@echo off setlocal @echo DelHotFix \[/D\] set sw=%1 set key=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall set blank= set fnd=findstr /L /I for /f "Tokens=*" %%a in ('reg query %key% ^|%fnd% /C:"\Uninstall\KB"') do ( set UK=%%a call :parse ) for /f "Tokens=*" %%a in ('reg query %key% ^|%fnd% /C:"\Uninstall\Q0"') do ( set UK=%%a call :parse ) for /f "Tokens=*" %%a in ('reg query %key% ^|%fnd% /C:"\Uninstall\Q8"') do ( set UK=%%a call :parse ) set key="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows 2000 Service Pack" call :SP set key="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows XP Service Pack" call :SP set key="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows Server 2003 Service Pack" call :SP if /i "%sw%" NEQ "/D" dir /b /a /ad "%SystemRoot%\$NT*" if /i "%sw%" NEQ "/D" goto finish for /f "Tokens=*" %%d in ('dir /b /a /ad "%SystemRoot%\$NT*"') do ( @echo Deleting "%SystemRoot%\%%d" rd /s /q "%SystemRoot%\%%d" ) :finish endlocal goto :EOF :parse set UK=HKLM%UK:~18% for /f "Tokens=2*" %%b in ('reg Query "%UK%" /v DisplayName') do ( set name=%%c ) if /i "%sw%" NEQ "/D" @echo %UK% %blank% %blank% %name% if /i "%sw%" NEQ "/D" goto :EOF @echo REG DELETE %UK% /F REG DELETE %UK% /F @echogoto :EOF :SP set OK=N call :SPX>nul 2>&1 if "%OK%" EQU "N" goto :EOF if /i "%sw%" NEQ "/D" @echo %key%&goto :EOF set UK=%key% @echo REG DELETE %UK% /F REG DELETE %UK% /F @echogoto :EOF :SPX for /f "Tokens=*" %%a in ('reg query %key%') do ( set OK=Y )
0 comments
Hide comments