我正在使用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 & "' ")
答案 0 :(得分:0)
使用""""
生成仅包含"
的字符串,并使用&
首先连接字符串。
mystring = "cmd /c " & """"C:\Test Folder\Folder1\Blah.cmd"""
(未经测试)
答案 1 :(得分:0)
反斜杠(\
)是WMI中的转义字符。因此,WMI查询必须使用双反斜杠\\
代替每个反斜杠:
Set colRandJob = objWMIService.ExecQuery _
("Select * from Win32_ScheduledJob WHERE Command='cmd /c ""C:\\Test Folder\\Folder1\\Blah.cmd""' ")