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

バックスラッシュ ( \) は、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 に答える
0

""""のみを含む文字列を生成するために使用し、最初に文字列を連結するために"も使用します。&

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

(未検証 )

于 2011-08-22T00:59:24.770 に答える