0
sc stop myService > nul
for /l %%A in (1,1,5) do (
for /f "tokens=3 delims=: " %%H in ('sc query "myService" ^|findstr "STATE"') do (
if /I "%%H" EQU "STOPPED" (
exit goto :stopSuccess
) else (
echo Checking if the Source Agent service has stopped successfully....
timeout 3 > nul
)
)
)
echo The service myService could not be stopped.
goto :error
:stopSuccess
sc delete myService > nul
cmdから私の.batスクリプトをexectueしようとすると、何もせずにcmdが閉じます。明らかに、サービスの名前は実際にmyServiceではありませんが、私は匿名性のためのプレースホルダーとして使用しています。このバッチスクリプトはなぜ実行されませんか?
サービスが正常に停止したかどうかを確認するには、3秒間隔で5つのチェックを行います。次に、いくつかのgoto文を使用して処理を進めます。
明示的にEXITコマンドがあります。 'GOTO:stopsuccess'はあなたの前にEXITを使っているので実行されません。 – Squashman
あなたが知っている通り、FOR/Lコマンドを強制的に抜け出せません。 TRUEのIF文にかかわらず、5回実行されます。 – Squashman