【发布时间】:2020-09-09 09:05:59
【问题描述】:
您好希望您能帮我解决我的问题,我已经为 IE10 创建了一个使用 vbs 的软件包,它会检查计算机上是否安装了修补程序,如果缺少一个修补程序/更新,脚本将中止安装并记录返回码。
我这里有一个用于检查计算机上安装的修补程序的代码,但我仍然得到错误类型与使用“Instr”不匹配
$--------------------------------- 检查已安装的补丁 ----------------------------------
objShell.run "cmd /c " & chr(34) & "systeminfo >" & strWin & "\Temp\IE10_patches.txt" & chr(34), 0, True
msgbox strWin & "\Temp\IE10_patches.txt"
strFile = strWin & "\Temp\IE10_patches.txt"
WScript.Sleep 5000
Const ForReading = 1
Set objFileToRead = objFSO.OpenTextFile(strFile, ForReading)
Do Until objFileToRead.AtEndOfStream
strLine = objFileToRead.ReadLine
If Len(strLine) > 0 Then
strText = Trim(strLine)
'strLen = Len(strLine)
'msgbox strLen
'MSGBOX strLine
'ctr = ctr+ 1
'MSGBOX ctr
这里出错 -> If (InStr(strText, "KB2786081")) > 0 Then
KB2786081_Flag = "True"
ElseIf (InStr(strText, "KB2731771")) > 0 Then
KB2731771_Flag = "True"
ElseIf (InStr(strText, "KB2729094")) > 0 Then
KB2729094_Flag = "True"
ElseIf (InStr(strText, "KB2639308")) > 0 Then
KB2639308_Flag = "True"
ElseIf (InStr(strText, "KB2533623")) > 0 Then
KB2533623_Flag = "True"
ElseIf (InStr(strText, "KB2670838")) > 0 Then
KB2670838_Flag = "True"
End If
End If
loop
objFileToRead.Close
【问题讨论】:
-
嗯。你的代码对我来说很好。
If语句周围的额外括号不是必需的,但它们不会造成任何伤害。 -
嗨,邦德代码仍然无法正常工作,但我找到了另一种解决方案,它工作正常。我将 Instr 更改为 InstrRev,我不知道这将来是否会出现问题。谢谢
-
这太疯狂了。
InStrRev()和InStr()都接受两个字符串,所以我不确定为什么一个会起作用,而另一个不起作用。您是否尝试将所有参数指定为InStr()--InStr(1, strText, "KB1234567", vbTextCompare)? -
@Bond 我可能有答案,因为我今天愚蠢地遇到了这个问题,然后意识到我已经声明了一个变量
Dim instr并为其分配了一个字符串,这显然会对 @987654329 的任何地方产生影响然后调用@函数。重命名我的变量解决了这个问题,当时我什至没有想到它有Dim instr, outstr作为输入和输出字符串,真是愚蠢的错误。
标签: vbscript internet-explorer-10 packaging wsh