Batch Wenn Task nicht da, dann shutdown.

Rob87

Cadet 2nd Year
Registriert
Feb. 2012
Beiträge
27
Hallo zusammen,

ich möchte mir nur eine kleine, simple Batch basteln und habe im Grunde wenig Ahnung davon...

folgendes soll möglich sein:

:loop
Wenn Task X nicht läuft, dann soll der PC runtergefahren werden.
Wenn Task x allerdings läuft, dann goto :loop

hier und da habe ich mich nun schon informiert und folgendes gebastelt.

:loop
tasklist /f1 "imagename eq x.exe" nh|findstr /bic:"x.exe" >nul ||(
shutdown -s -f -t 0
) && (
goto loop
)

Also... Wenn findstr nicht erfolgreich war (dafür das ||) dann soll der shutdownbefehl abgesetzt werden.
wenn findstr den Task findet gibt er den Errorlevel 0 zurück, findstr war also erfolgreich und soll in den loop laufen (dafür das &&).


Haut allerdings nicht hin.
Wenn der Task nicht geöffnet ist, dann geht er den shutdownbefehl zwar durch.
Aber wenn der Task geöffnet ist, dann funktioniert die goto funktion nicht und die commandline wird nach einmaligen durchlaufen geschlossen (es soll aber so lange durchlaufen, bis der Task geschlossen wird).

Vielleicht hat gerade ein kluger Kopf Mitleid und möchte mir helfen....

Vielen Dank! ;)
 
Vielen Dank, sieht auch vielversprechend aus. Funktioniert aber nicht :P

@echo off &setlocal
:loop
ping 127.0.0.1 (nur als kleine Pause, hat sonst keine Funktion)
for /F %%i in (' tasklist ^| find /i "X.EXE"') do set RUN=YES
if not defined RUN (
shutdown -s -f -t 0
) else (
goto :loop
)
)

Dabei wird der Rechner runtergefahren obwohl der Task nicht läuft.
 
Das geht bei mir problemlos

Code:
@echo off &setlocal
:loop
ping 127.0.0.1 -n 2
set FOUND=NO
for /F %%i in (' tasklist ^| find /i "notepad.EXE"') do set FOUND=YES
if "%FOUND%"=="YES" (
  echo GEFUNDEN
) else (
  echo NICHT GEFUNDEN
)
goto :loop
Wenn bei dir RUN einmal als YES definiert wurde, dann wird es ja immer definiert bleiben...
 
Funktioniert! Sehr toll!
Ich danke dir vielmals. :)
 
Zurück
Oben