VBScript不是我的事,而是涉猎。
基本上我有一个脚本,它将查找包含一组机器名的文本文件,然后检查服务是否正在运行,如果是,则停止并禁用它,如果没有运行则检查它是否已启用然后禁用它。注销开始状态和结束状态。
尝试增强脚本以便能够执行相反操作 - 即:启用和启动。 这些将从Windows预定任务运行,所以想要传递一个参数“On”或“Off”
顶部是这样的:
Function Toggle
If UCase(WScript.Arguments(0)) = "ON" Then states = "Running" End If
If UCase(WScript.Arguments(0)) = "OFF" Then states = "Running" End If
If UCase (WScript.Arguments(0)) = "ON" Then symbol = " = " End If
If UCase (WScript.Arguments(0)) = "OFF" Then symbol = " <> " End If
End Function
但是当我尝试使用这些来比较服务的状态时,可以进一步使用:
If InStr(objProcess.DisplayName,strService) > 0 And objProcess.State & symbol & states Then Status = True
Microsoft VBScript运行时错误:Typemismatch:'[string:“Stopped = Running”]'
如果我注释掉符号变量并使用=
符号,则比较有效。
是否可以将=
或<>
传入字符串进行比较?
在所有变量周围使用cstr
尝试但没有区别。
答案 0 :(得分:0)
您遇到问题的原因如前所述,您实际上是在尝试对连接字符串执行布尔操作。
你可以绕过这两种方式中的一种 - (几乎)好方式和邪恶方式 - 你的选择...
编写一个小型处理器来评估字符串......
If symbol = "=" Then...
(May your soul boil in hell for all eternity...)
不要相信炒作 - 如果你正确地计划并正确地清理你的琴弦你应该没事。
Eval
是关键,或者更确切地说是VBScript的情况,Execute
。
要非常小心 - 可以滥用。
另外,您的情况可能实际上不适合Execute
。您可能需要使用第一个或者好的&#39;上面的选项。