0

後で殺す変数にPIDをキャプチャしています

  IF NOT "%SERVICE_PID%" == 0 taskkill /pid %SERVICE_PID% /t /f 

ただし、バッチファイルでこれを行うたびに、システムプロセスが強制終了されるため、コンピューターが再起動します

サービス pid は、cmd から起動されたユーザー定義のサービスである必要があります

マシンが鳴き続ける理由がわかりません。

コマンド ラインで「taskkill /pid %SERVICE_PID% /t /f」を実行すると、正常に動作します。=/

ヘルプ!

SERVICE_PID の設定

FOR /F "tokens=4 delims= " %%A IN ('sc queryex myservice ^|FIND "PID"')
 DO SET SERVICE_PID=%%A
4

5 に答える 5

5

これを使用すると、適切な PID が取得されることがわかりました。

for /f "tokens=1,2,3,4 delims=/ " %%a in ('sc queryex ServiceName ^|FIND "PID"') do set PID=%%c
taskkill /pid %PID% /t /f

その後、それは魅力のように機能します。

于 2011-01-03T09:17:44.430 に答える
1

Try removing /f option, it forces to terminate a process, so system processes might get terminated forcefully without notification.

I am suspecting you are trying to kill some system processes in the batch script, in the sense that in your list of PIDs there might be some system process IDs as well.

Thanks

于 2009-12-30T21:54:02.610 に答える
1

遅延拡張が有効になっていることを確認してください。説明については、ヘルプ セットを参照してください。

この行を挿入します

SETLOCAL ENABLEDELAYEDEXPANSION

バッチファイルの最初の行として。

環境変数を取得する!SERVICE_PID!代わりに使用します。%SERVICE_PID%

于 2009-12-31T11:14:06.050 に答える
1

これが一番信頼できると思った

net stop SERVICE_NAME
timeout /t 10
for /f "tokens=1,2,3,4 delims=/ " %%a in ('sc queryex SERVICE_NAME ^|FIND "PID"') do set PID=%%c
if not %PID% == 0 taskkill /pid %PID% /f
timeout /t 10
net start SERVICE_NAME

タイムアウトは任意です。最初のタイムアウトにより、サービスは一定時間、適切に停止する機会が与えられます。2 番目のタイムアウトにより、オペレーティング システムが反応できるようになります。

サービスは開始中または停止中です。後でもう一度やり直してください。
サービスは再開されません。

%PID% == 0でない場合にサービスが停止されていないかどうかを確認し、必要に応じて強制終了します。私の場合、 /tフラグは不要でした。

于 2016-01-12T23:26:49.230 に答える
1

taskkill /fi "IMAGENAME eq idsm.exe" /fi "CPUTIME gt 00:30:00"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
idsm.exe                      4556 Console                    0     38,328 K

この結果が得られました。同じコマンドラインで、このプロセスを強制終了する方法、自動的に実行する必要があります。この PID を使用して強制終了する方法を意味します。

于 2012-04-23T05:02:21.557 に答える