删除系统补丁备份目录
本帖最后由 hooshen 于 2009-4-30 14:56 编辑删除系统补丁备份文件的脚本求教各位大侠
我用批处理是这样写的
echo 正在删除Windows补丁备份目录,请稍等......
REM 删除$hf_mig$文件夹
RD %windir%\$hf_mig$ /Q /S
REM 把补丁卸载文件夹的名字保存成hotfix.txt
dir %windir%\$NtUninstall* /a:d /b >%windir%\hotfix.txt
REM 从hotfix.txt中读取文件夹列表并且删除文件夹
for /f %%i in (%windir%\hotfix.txt) do rd %windir%\%%i /s /q
REM 删除hotfix.txt
del %windir%\hotfix.txt /f /q
echo 正在删除补丁安装记录,请稍等......
del /f /s /q %systemdrive%\KB*.log
改用AU3写,其中删除$NtUninstall*文件夹,这条就不会写了, RunWait(@comspec & " /c dir %windir%\$NtUninstall* /a:d /b >%windir%\hotfix.ini","",@sw_hide)
$var = IniReadSectionNames(@WindowsDir & "\hotfix.ini")
For $i = 1 To $var
Next
DirRemove(@WindowsDir &$var,1)
请教各位大侠,这段代码为什么不起作用啊 $aKBFile = _FileListToArray(@WindowsDir, "$NtUninstallKB*", 2)
For $i = 1 To $aKBFile
If NOT StringRegExp($aKBFile[$i], "^\$NtUninstallKB\d{6}(\-v\d+)?\$$") Then ContinueLoop
DirRemove(@WindowsDir & "\" & $aKBFile[$i], 1)
Next D:\1.bmp
大侠,第一行不行啊
我改成:
$aKBFile = _FileListToArray(@WindowsDir & "\$NtUninstall*", 1)
也不行,
不知为什么,请赐教! Line 30(File "D:\清理备份\删除系统补丁备份目录.au3"):
$aKBFile = _FileListToArray(@WindowsDir, "$NtUninstallKB*", 2)
$aKBFile = ^ ERROR
错误:未知函数名. #Include <File.au3> #Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray(@WindowsDir,"$NtUninstallKB*")
For $i = 1 To $FileList
If NOT StringRegExp($FileList[$i], "^\$NtUninstallKB\d{6}(\-v\d+)?\$$") Then ContinueLoop
DirRemove(@WindowsDir & "\" & $FileList[$i], 1)
Next
这样写会有三个文件夹不能删除:
$NtUninstallKB936782_WMP10$
$NtUninstallKB952069_WM9$
$NtUninstallKB957097_0$
为什么呢? 7# hooshen
我用了正则。你把If NOT StringRegExp那行去掉吧。 或者我改了下正则:
$aKBFile = _MyFileListToArray(@WindowsDir, "$NtUninstallKB*", 2)
For $i = 1 To $aKBFile
If StringRegExp($aKBFile[$i], "^\$NtUninstallKB\d{6}([-_]\w+)?\$$") Then _
DirRemove(@WindowsDir & "\" & $aKBFile[$i], 1)
Next 谢谢sensel提供的帮助,问题已解决
修正后的代码如下
;删除Windows补丁备份目录
#Include <File.au3>
DirRemove(@WindowsDir & "\$hf_mig$", 1)
If FileExists(@WindowsDir & "\$NtUninstallKB*") Then
ToolTip(@CR&""&"系统目录存在补丁备份文件,1秒钟后将自动删除"&""&@CR,@DesktopWidth-460,@DesktopHeight-100)
Sleep(1000)
$FileList=_FileListToArray(@WindowsDir,"$NtUninstallKB*")
For $i = 1 To $FileList
DirRemove(@WindowsDir & "\" & $FileList[$i], 1)
Next
Else
ToolTip(@CR&""&"系统目录没有补丁备份文件,1秒钟后将自动退出"&""&@CR,@DesktopWidth-460,@DesktopHeight-100)
Sleep(1000)
EndIf 多谢,也在找这个解决办法。 谢谢了。。 谢谢了。。
页:
[1]