[已解决]如何将计算机已经打的补丁写入到一个文件内?
本帖最后由 newuser 于 2010-8-9 16:57 编辑以下2段代码怎么都只写了一个补丁文件名到文件内?#cs
While 1
Dim $FixedPatchsRegPath="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
Dim $FixedPatchsListPath=@TempDir & "\FixedPatchsList.ini"
Dim $i
$i +=1
$Var=RegEnumKey($FixedPatchsRegPath,$i)
If @error <>0Then ExitLoop
FileOpen($FixedPatchsListPath,8) ;8表示如果指定打开目录不存在那么强制建立它!
FileWriteLine($FixedPatchsListPath,$Var & @CRLF);将枚举出的值逐行写入到指定的ini文件中
WEnd
FileClose($FixedPatchsListPath)
#ce
For $i= 1 to 1000
Dim $FixedPatchsListPath=@ScriptDir & "\FixedPatchsList.ini"
$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix", $i)
;MsgBox(0,'',$var)
If @error <> 0 then ExitLoop
FileOpen($FixedPatchsListPath)
FileWriteLine($FixedPatchsListPath,$var & @CRLF)
Next
FileClose($FixedPatchsListPath) 代码没什么问题吧
测试了下貌似正常 Dim $FileOpen = FileOpen(@ScriptDir & "\FixedPatchsList.ini", 9), $i
Dim $FixedPatchsRegPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
While 1
$i += 1
$var = RegEnumKey($FixedPatchsRegPath, $i)
If @error Then ExitLoop
FileWriteLine($FileOpen, $var)
WEnd
#cs
For $i = 1 To 1000
$var = RegEnumKey($FixedPatchsRegPath, $i)
If @error Then ExitLoop
FileWriteLine($FileOpen, $var)
Next
#ce
FileClose($FileOpen) 楼上动作好快。
Dim $FixedPatchsRegPath="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
Dim $FixedPatchsListPath="FixedPatchsList.ini"
FileOpen($FixedPatchsListPath,8)
Dim $i = 0
While 1
$i = $i + 1
$Var=RegEnumKey($FixedPatchsRegPath,$i)
If @error <> 0Then ExitLoop
FileWriteLine($FixedPatchsListPath,$Var & @CRLF);将枚举出的值逐行写入到指定的ini文件中
WEnd
FileClose($FixedPatchsListPath)
回复 3# afan
谢谢,解决了!应该在while循环之前打开ini文件.#cs
功能:收集计算机上已经打的补丁
问题:
1.Dim几个变量在while循环内,只能收集1个已打补丁?
答:应该在While循环之前打开文件就OK。
#ce
Dim $FixedPatchsListPath=@ScriptDir & "\FixedPatchsList.ini"
FileOpen($FixedPatchsListPath,8) ;8表示如果指定打开目录不存在那么强制建立它!
While 1
Dim $FixedPatchsRegPath="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
Dim $i
$i += 1
$Var=RegEnumKey($FixedPatchsRegPath,$i)
If @error <>0Then ExitLoop
FileWriteLine($FixedPatchsListPath,$Var & @CRLF);将枚举出的值逐行写入到指定的ini文件中
WEnd
FileClose($FixedPatchsListPath)
回复 6# newuser
你只理解了一半。你的代码FileOpen没起作用。
测试下你我代码所耗费的时间… 回复 7# afan
为什么呢?难道是变量先定义的早用的效率就高?
页:
[1]