【发布时间】:2018-04-25 18:28:24
【问题描述】:
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,但这没有任何区别。
【问题讨论】:
-
您正在尝试将字符串评估为布尔值 (
objProcess.State & symbol & states)。&是一个连接符号。 -
另外,在上面的代码中,
ON和OFF状态都为“正在运行”。 -
嗨,是的,我知道,符号变量确实是重要的变量,因为它将用于传递检查是 = 还是 运行。可以想到其他方法来编写脚本,只是想知道为什么这种方法不起作用,因为打字会更少。
标签: vbscript