0

我正在使用 vbscript 查询正在执行特定命令的“at”作业,我相信我的引用错误。当我查询不包含空格或引号的内容时,我已确认脚本按预期工作;但是,当我查询包含空格和引号的内容时,我没有得到想要的结果。我想找到的确切值是: cmd /c "C:\Test Folder\Folder1\Blah.cmd"

这是我正在使用的代码:

strComputer = "."
strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\"_
    & strComputer & "\root\cimv2")
Set colRandJob = objWMIService.ExecQuery _
            ("Select * from Win32_ScheduledJob WHERE Command='cmd /c ""C:\Test Folder\Folder1\Blah.cmd""' ")

For Each objJob in colRandJob
            WScript.Echo "Found  AT Job with ID " + CStr(objJob.JobID)
Next

我尝试了一些不同的方法,但似乎找不到正确的方法。有人可以帮助我并让我知道正确的方法吗?

更新

我能够通过执行以下操作来解决问题(我只包括相关行)我没有在路径中没有双反斜杠的情况下对此进行测试,但我相信它与我使用的新引用一起需要:

'Assign the string I'm looking for to a variable
set targetCmd = "cmd /c "C:\\Test Folder\\Folder1\\Blah.cmd""

Set colRandJob = objWMIService.ExecQuery _
    ("Select * from Win32_ScheduledJob WHERE Command='" & targetCmd & "' ")
4

2 回答 2

0

用于""""生成仅包含的字符串",也用于&首先连接您的字符串。

mystring = "cmd /c " & """"C:\Test Folder\Folder1\Blah.cmd"""  

(未测试)

于 2011-08-22T00:59:24.770 回答
0

反斜杠 ( \) 是 WMI 中的转义字符。因此,WMI 查询必须使用双反斜杠\\代替每个单反斜杠:

Set colRandJob = objWMIService.ExecQuery _
    ("Select * from Win32_ScheduledJob WHERE Command='cmd /c ""C:\\Test Folder\\Folder1\\Blah.cmd""' ")
于 2011-08-22T16:19:45.187 回答