2011-08-21 32 views
0

我正在使用VBScript來查詢執行特定命令的「at」作業,並且我相信我有引用錯誤。當我查詢不包含空格或引號的內容時,我已經確認該腳本符合預期;然而,當我查詢包含空格和引號的內容時,我沒有得到期望的結果。確切的價值,我想找到的是: CMD/C 「C:\ Test文件夾\ Folder1中\ Blah.cmd」VBscript中的引用

這裏是我使用的代碼:

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

你得到什麼,如果你刪除'WHERE'條款(即選擇所有作業)?我試過了,沒有輸出 – 2011-08-22 11:08:01

+0

你用過的語法是完全正確的。看來,你的查詢沒有平等。 –

回答

0

使用""""生產只含",還可以使用&先串連您的字符串的字符串。

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

(未測試)

+0

我說沒有測試過。 – ghostdog74

+1

不應該是'「」「C:\ Test Folder \ Folder1 \ Blah.cmd」「」'?即你有太多的雙引號 – 2011-08-22 08:52:47

+0

我只是解決了非編譯問題。同意,OP在問題 – 2011-08-22 11:06:38

0

反斜槓(\)是WMI轉義字符。因此,WMI查詢必須使用雙反斜線\\代替每個單反斜線:

Set colRandJob = objWMIService.ExecQuery _ 
    ("Select * from Win32_ScheduledJob WHERE Command='cmd /c ""C:\\Test Folder\\Folder1\\Blah.cmd""' ") 
+0

中有正確的引號我相信這是問題的一部分。我已經更新了我的帖子,最終爲我工作。 – Johnathon