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
Wenn ich versuche, mein .bat-Skript von cmd auszuführen, tut es nichts und cmd schließt sich. Offensichtlich ist der Name des Dienstes nicht myService, aber ich verwende ihn als Platzhalter für die Anonymität.Warum wird dieses Stapelscript nicht ausgeführt?
Ich möchte 5 Prüfungen im Abstand von 3 Sekunden durchführen, um zu sehen, ob der Dienst ordnungsgemäß gestoppt wurde. Dann benutze ich ein paar Anweisungen, um fortzufahren.
Sie haben explizit einen EXIT-Befehl. Der 'GOTO: stopsuccess' wird nicht ausgeführt, da Sie EXIT davor verwenden. – Squashman
Und nur damit Sie wissen, können Sie nicht zwangsweise aus einem FOR/L-Befehl ausbrechen. Es wird alle 5 Mal ausgeführt, unabhängig davon, ob die IF-Anweisung TRUE ist. – Squashman