2

バッチは、vbs コードを変更して、vbs が使用できないようにします。これを修正するにはどうすればよいですか?

バッチコード:

echo Const HIGH = 128 >> prio.vbs
echo strComputer = "." >> prio.vbs
echo Set objWMIService = GetObject("winmgmts:" _ >> prio.vbs
echo    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") >> prio.vbs
echo Set colProcesses = objWMIService.ExecQuery _ >> prio.vbs
echo    ("Select * from Win32_Process Where Name = 'file.exe'") >> prio.vbs
echo For Each objProcess in colProcesses >> prio.vbs
echo    objProcess.SetPriority(HIGH)  >> prio.vbs
echo Next >> prio.vbs

VBS オリジナル:

Const HIGH = 128
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'file.exe'")
For Each objProcess in colProcesses
    objProcess.SetPriority(HIGH) 
Next

VBS 後 :

Const HIGH = 128 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
Set colProcesses = objWMIService.ExecQuery _ 
   ("Select * from Win32_Process Where Name = 'file.exe'") 
For Each objProcess in colProcesses 
   objProcess.SetPriority(HIGH)  
Next

助けてください

4

2 に答える 2

3

&文字は(コマンドチェーン)で特別な意味をCMD持っているため、文字通りのアンパサンドを取得するには、文字をエスケープする必要があります。

echo    ^& "{impersonationLevel=impersonate}!\\" ^& strComputer ^& "\root\cimv2") >> prio.vbs

閉じ括弧')'および'<'、'>'についても同じことが言えます。

于 2013-02-17T23:09:44.423 に答える