
89485
12.04.2010
Endlosschleife in Batch (nicht gewollt)
Guten Morgen,
ich hab folgendes Problem:
Ich wollte meinem Vater ein Batch schreiben, indem er remote andere Rechner, bei sich in der Arbeit runterfahren kann.
In Gegenzug soll aber auch der User, an dem jeweiligen PC eine Möglichkeit haben, den Shutdownbefehl abzubrechen.
Das Problem ist nun dies, dass das Batch einfach so in eine Endlosschleife fällt, und nur die eigentlichen Befehle, also echo ausgibt.
Die PC´s laufen jeweils mit Windows XP SP2...
Hier ist der Quellcode von der 1. Batchdatei:
@echo off
cd\
cls
shutdown -r -f -t 180 -c "Rechner wird in 3 Minuten neugestartet!!!"
echo.
echo Zum Beenden der laufenden Anwendung
echo.
echo in diesem FENSTER
echo.
echo 2x Enter
echo.
echo drcken.
echo.
pause>nul
call F:\skripte\Shutdown-blocker.bat
echo Erfolgreich ausgefhrt...
echo.
echo Zum Beenden Enter drcken!
pause>nul
die 2. Batchdatei, die aufgerufen wird, hat den Quelltext.
@echo off
cd\
shutdown -a
pause>nul
Hat bei mir zu Hause schon einwandfrei funktioniert?!?
LG Batchliebhaber
P.S.: Bitte auch selbst ausprobieren, da auf den ersten Blick kein Programmierfehler zu erkennen ist.
ich hab folgendes Problem:
Ich wollte meinem Vater ein Batch schreiben, indem er remote andere Rechner, bei sich in der Arbeit runterfahren kann.
In Gegenzug soll aber auch der User, an dem jeweiligen PC eine Möglichkeit haben, den Shutdownbefehl abzubrechen.
Das Problem ist nun dies, dass das Batch einfach so in eine Endlosschleife fällt, und nur die eigentlichen Befehle, also echo ausgibt.
Die PC´s laufen jeweils mit Windows XP SP2...
Hier ist der Quellcode von der 1. Batchdatei:
@echo off
cd\
cls
shutdown -r -f -t 180 -c "Rechner wird in 3 Minuten neugestartet!!!"
echo.
echo Zum Beenden der laufenden Anwendung
echo.
echo in diesem FENSTER
echo.
echo 2x Enter
echo.
echo drcken.
echo.
pause>nul
call F:\skripte\Shutdown-blocker.bat
echo Erfolgreich ausgefhrt...
echo.
echo Zum Beenden Enter drcken!
pause>nul
die 2. Batchdatei, die aufgerufen wird, hat den Quelltext.
@echo off
cd\
shutdown -a
pause>nul
Hat bei mir zu Hause schon einwandfrei funktioniert?!?
LG Batchliebhaber
P.S.: Bitte auch selbst ausprobieren, da auf den ersten Blick kein Programmierfehler zu erkennen ist.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 140331
Url: https://administrator.de/forum/endlosschleife-in-batch-nicht-gewollt-140331.html
Ausgedruckt am: 23.04.2025 um 16:04 Uhr
13 Kommentare
Neuester Kommentar
Moin Batchliebhaber,
wenn Bätches in Endlosschleifen verfallen, obwohl eigentlich kein "goto ::whereEver" verwendet wird...
dann liegt es in 99,34% der Fälle daran, dass sie sich selbst aufrufen.
Heißt eventuell der erste Batch "Shutdown.bat" oder "Shutdown.cmd"?
Ansonsten:
Grüße
Biber
wenn Bätches in Endlosschleifen verfallen, obwohl eigentlich kein "goto ::whereEver" verwendet wird...
dann liegt es in 99,34% der Fälle daran, dass sie sich selbst aufrufen.
Heißt eventuell der erste Batch "Shutdown.bat" oder "Shutdown.cmd"?
Ansonsten:
- bitte Codetags verwenden
- einer, der etwas davon versteht, hat dich in einem deiner letzten Beiträge darauf hingewiesen, dass dieses sinnfreie "cd \" als Standardzeile 2
Bullshitentbehrlich ist. Warum/wozu ist das jetzt wieder drin? Und warum wechselt z.B. der zweite batch überhaupt nach Irgendwo-Root? Und warum wird der ursprüngliche Zustand nicht wieder hergestellt? - Wieso sollte auf jedem gatesverdammten Rechner in Reichweite deines Papas ein Verzeichnis "F:\Skripte" befinden
- Welchen Rechner glaubst du denn remote herunterzufahren????
Grüße
Biber
Hallo Batchliebhaber!
Na gut, ein Beispiel extra für Dich: Wenn Du einen Batch namens "test.bat" hättest, in dem auch die Zeile
steht - was würde der wohl machen, wenn im Ablauf diese Zeile erreicht wird? (Bitte auch selbst ausprobieren, da auf den ersten Blick kein Programmierfehler zu erkennen ist.)
Grüße
bastla
Na gut, ein Beispiel extra für Dich: Wenn Du einen Batch namens "test.bat" hättest, in dem auch die Zeile
test -r -f -t 180 -c "Rechner wird in 3 Minuten neugestartet!!!"
Grüße
bastla
Hallo Batchliebhaber!
Gut, lassen wir die Scherze ...
Wenn Du in eine Datei "Shutdown.bat" die Zeile
<code type="plain>shutdown -r -f -t 180 -c "Rechner wird in 3 Minuten neugestartet!!!"
schreibst, hast Du eine sehr gute Chance, damit was zu starten? Richtig, Deine "Shutdown.bat" ...
... die dann natürlich nix Besseres zu tun hat, als was zu starten? Richtig, ... (ja, kennen wir schon).
Wenn Du Deinen Batch allerdings "BLHShutdown.bat" nennst, oder vielleicht die entsprechende Zeile so:
schreibst ...
Grüße
bastla
Gut, lassen wir die Scherze ...
Wenn Du in eine Datei "Shutdown.bat" die Zeile
<code type="plain>shutdown -r -f -t 180 -c "Rechner wird in 3 Minuten neugestartet!!!"
schreibst, hast Du eine sehr gute Chance, damit was zu starten? Richtig, Deine "Shutdown.bat" ...
... die dann natürlich nix Besseres zu tun hat, als was zu starten? Richtig, ... (ja, kennen wir schon).
Wenn Du Deinen Batch allerdings "BLHShutdown.bat" nennst, oder vielleicht die entsprechende Zeile so:
shutdown.exe -r -f -t 180 -c "Rechner wird in 3 Minuten neugestartet!!!"
Grüße
bastla
Hallo Batchliebhaber!
Grüße
bastla
bringt des wirklich so viel, wenn ich als Befehl shutdown.exe schreibt bzw. was bringt des BLH im Dateinamen???
Wenn Du es noch nicht weißt, kann ich Dich eigentlich nur ein weiteres Mal zitieren:Bitte auch selbst ausprobieren ...
... und reden wir dann nochmals drüber ...Grüße
bastla
Moin Batchliebhaber,
Ich versuche auch noch einmal, bastlas schier unerschöpfliche Geduld nachzuahmen... ungeachtet der geringen Erfolgsaussichten.
Tipp dort ein (ohne das führende ">", welches meinen Prompt darstellt):
<code type=plain">
Die Antwortzeile (beginnend mit PATHEXT, nicht zu verwechseln mit dem ähnlich klingenden Kleber), listet in zufällig erscheinender Reihenfolge alle Datei-Endungen auf, die der CMD-Interpreter als Endungen und Merkmale ihm bekannter ausführbarer Dateien akzeptiert.
Auf deutscher:
Wenn du einen Befehl am CMD-Prompt mit ENTER abschickst (oder im Batch in einer Zeile stehen hast und den Batch ausführst) ...
... wie zum Beispiel den Befehl "Hallo" ....
...und "Hallo" nun kein dem Batch bekanntes internes Kommando oder aus anderen Gründen vorrangig ist
...dann prüft der CMD-Interpreter stumpf nach alphabetischer Reihenfolge
Deshalb wird bei dir, wenn du nur "Shutdown" schreibst UND eine Shutdown.bat UND eine Shutdown.exe vorhanden ist, zuerst deine Shutdown.bat gefunden und aufgerufen.
Wenn du keine Endung angibst.
Grüße
Biber
Zitat von @89485:
Hallo Bastla,
was Biber geschrieben hat;
dann liegt es in 99,34% der Fälle daran, dass sie sich selbst aufrufen.
Heißt eventuell der erste Batch "Shutdown.bat" oder "Shutdown.cmd"?
sagt doch, dass es sich selbst aufruft;
Exakt. So sagte Biber.Hallo Bastla,
was Biber geschrieben hat;
dann liegt es in 99,34% der Fälle daran, dass sie sich selbst aufrufen.
Heißt eventuell der erste Batch "Shutdown.bat" oder "Shutdown.cmd"?
sagt doch, dass es sich selbst aufruft;
Es ruft sich aber nicht selbst auf, ....
Do-hoch! Könnten diese Augen lügen...? *liebguck*Ich versuche auch noch einmal, bastlas schier unerschöpfliche Geduld nachzuahmen... ungeachtet der geringen Erfolgsaussichten.
und wieso sollte es an der Endung .bat oder .cmd liegen?
Geh doch mal bitte kurz an einen der rund um die Uhr geöffneten CMD-Prompts.Tipp dort ein (ohne das führende ">", welches meinen Prompt darstellt):
<code type=plain">
set pathext
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1Die Antwortzeile (beginnend mit PATHEXT, nicht zu verwechseln mit dem ähnlich klingenden Kleber), listet in zufällig erscheinender Reihenfolge alle Datei-Endungen auf, die der CMD-Interpreter als Endungen und Merkmale ihm bekannter ausführbarer Dateien akzeptiert.
Auf deutscher:
Wenn du einen Befehl am CMD-Prompt mit ENTER abschickst (oder im Batch in einer Zeile stehen hast und den Batch ausführst) ...
... wie zum Beispiel den Befehl "Hallo" ....
...und "Hallo" nun kein dem Batch bekanntes internes Kommando oder aus anderen Gründen vorrangig ist
...dann prüft der CMD-Interpreter stumpf nach alphabetischer Reihenfolge
- Existiert im aktuellen Verzeichnis oder in Suchpfad PATH eine Datei Hallo.bat? --> wenn ja, führe die Hallo.bat aus, wenn nein, suche weiter
- Existiert im aktuellen Verzeichnis oder in Suchpfad PATH eine Datei Hallo.cmd?--> wenn ja, führe die Hallo.cmd aus, wenn nein, suche weiter
- Existiert im aktuellen Verzeichnis oder in Suchpfad PATH eine Datei Hallo.com?--> wenn ja, führe die Hallo.com aus, wenn nein, suche weiter
- Existiert im aktuellen Verzeichnis oder in Suchpfad PATH eine Datei Hallo.exe?--> wenn ja, führe die Hallo.exe aus, wenn nein, suche weiter
- ....
- ....
- Existiert im aktuellen Verzeichnis oder in Suchpfad PATH eine Datei Hallo.wsh?--> wenn ja, führe die Hallo.wsh aus, wenn nein, sage "Unbekannter Befehl oder Dateiname 'Hallo'".
Deshalb wird bei dir, wenn du nur "Shutdown" schreibst UND eine Shutdown.bat UND eine Shutdown.exe vorhanden ist, zuerst deine Shutdown.bat gefunden und aufgerufen.
Wenn du keine Endung angibst.
Grüße
Biber