引用VBscript

时间:2011-08-21 22:53:14

标签: vbscript quoting

我正在使用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 & "' ")

2 个答案:

答案 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""' ")