89485
Goto Top

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 drcken.
echo.
pause>nul
call F:\skripte\Shutdown-blocker.bat
echo Erfolgreich ausgefhrt...
echo.
echo Zum Beenden Enter drcken!
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.

Content-Key: 140331

Url: https://administrator.de/contentid/140331

Printed on: April 18, 2024 at 05:04 o'clock

Member: Biber
Biber Apr 12, 2010 at 07:53:05 (UTC)
Goto Top
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:
  • 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 Bullshit entbehrlich 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
Mitglied: 89485
89485 Apr 12, 2010 at 08:00:25 (UTC)
Goto Top
Moin,

ja aber warum sollte ich denn ein goto :Sonstwo verwenden, wenn ich es gar nicht brauche???

Der erste Batch heißt "Shutdown.bat", aber wie soll ich es denn sonst nennen? (xxx.bat)

zu deinen Tipps:

- ich hab auch schon bei letzten Mal gesagt, dass ich des cd\ und cls einfach als Gewohnheit nimm, also kannst du des außen vorlassen....
- der Pfad "F:\skripte\...." is nur, weil da des Skript im Moment auf den USB Stick liegt, aber es doch auch egal, wo es liegt, weil dem Shutdownbefehl des doch am * vorbeigeht?!?
- ebenso mit dem Rechner, des geht dann über IP - Adresse?


Was ich eigentlich wissen wollte, wieso des Skript in eine Endlosschleife fällt? Und dann statt den Befehlen, nur echos anzeigt........


LG
Member: bastla
bastla Apr 12, 2010 at 13:25:08 (UTC)
Goto Top
Hallo Batchliebhaber!
Was ich eigentlich wissen wollte, wieso des Skript in eine Endlosschleife fällt? Und dann statt den Befehlen, nur echos anzeigt........
Weil Dein Batch nicht zu den 0,66 % gehört ...

Grüße
bastla
Mitglied: 89485
89485 Apr 12, 2010 at 13:27:42 (UTC)
Goto Top
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, sondern wird wie jedes andere Batch oder Programm mit einem Doppelklick gestartet.
und wieso sollte es an der Endung .bat oder .cmd liegen? Ich hab viele andere XXX.bat Dateien, die nicht in eine Endlosschleife fallen....


Also was hat des damit zu tun? o.O

LG
Member: bastla
bastla Apr 12, 2010 at 13:42:06 (UTC)
Goto Top
Hallo Batchliebhaber!

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!!!"
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
Mitglied: 89485
89485 Apr 12, 2010 at 13:49:32 (UTC)
Goto Top
Hi,

ja Ablauf...

1. Shutdown -r = herunterfahren und neustarten
2. Shutdown -f = erzwingen fürs Schließen der offenen Anwendungen
3. Shutdown -t 180 = wartet 180 sec. bis zur Ausführung
4. Shutdown -c "xxx" = Kommentar
Member: bastla
bastla Apr 12, 2010 at 14:05:41 (UTC)
Goto Top
Hallo Batchliebhaber!
1. Shutdown -r = herunterfahren und neustarten
2. Shutdown -f = erzwingen fürs Schließen der offenen Anwendungen
3. Shutdown -t 180 = wartet 180 sec. bis zur Ausführung
4. Shutdown -c "xxx" = Kommentar
Wie, das alles kann Deine "Shutdown.bat"?

Grüße
bastla
Mitglied: 89485
89485 Apr 12, 2010 at 14:07:58 (UTC)
Goto Top
ehmmm ????

Ja....

steht doch in 1. Kommentar xD
Member: bastla
bastla Apr 12, 2010 at 14:12:45 (UTC)
Goto Top
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:
shutdown.exe -r -f -t 180 -c "Rechner wird in 3 Minuten neugestartet!!!"
schreibst ...

Grüße
bastla
Mitglied: 89485
89485 Apr 12, 2010 at 15:26:38 (UTC)
Goto Top
ok Hi Bastla =D

jaja immer mit den Rookies Scherze machen ^^

bringt des wirklich so viel, wenn ich als Befehl shutdown.exe schreibt bzw. was bringt des BLH im Dateinamen???

Grüße

Batchliebhaber
Member: bastla
bastla Apr 12, 2010 at 15:36:26 (UTC)
Goto Top
Hallo Batchliebhaber!
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
Member: Biber
Biber Apr 12, 2010 at 16:46:00 (UTC)
Goto Top
Moin Batchliebhaber,

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.
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;.PSC1

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
  • 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'".
[vereinfachte Prozessbeschreibung, die nur diesen Sachverhalt modellhaft erklären soll]

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
Mitglied: 89485
89485 Apr 15, 2010 at 04:59:16 (UTC)
Goto Top
Danke für die Tipps =D

ist ebenfalls gelöst...