Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Endlosschleife in Batch (nicht gewollt)

Frage Entwicklung Batch & Shell

Mitglied: 89485

89485 (Level 1)

12.04.2010 um 08:51 Uhr, 7292 Aufrufe, 13 Kommentare

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.
Mitglied: Biber
12.04.2010 um 09:53 Uhr
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
Bitte warten ..
Mitglied: 89485
12.04.2010 um 10:00 Uhr
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
Bitte warten ..
Mitglied: bastla
12.04.2010 um 15:25 Uhr
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
Bitte warten ..
Mitglied: 89485
12.04.2010 um 15:27 Uhr
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
Bitte warten ..
Mitglied: bastla
12.04.2010 um 15:42 Uhr
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
Bitte warten ..
Mitglied: 89485
12.04.2010 um 15:49 Uhr
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
Bitte warten ..
Mitglied: bastla
12.04.2010 um 16:05 Uhr
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
Bitte warten ..
Mitglied: 89485
12.04.2010 um 16:07 Uhr
ehmmm ????

Ja....

steht doch in 1. Kommentar xD
Bitte warten ..
Mitglied: bastla
12.04.2010 um 16:12 Uhr
Hallo Batchliebhaber!

Gut, lassen wir die Scherze ...

Wenn Du in eine Datei "Shutdown.bat" die Zeile
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
Bitte warten ..
Mitglied: 89485
12.04.2010 um 17:26 Uhr
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
Bitte warten ..
Mitglied: bastla
12.04.2010 um 17:36 Uhr
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
Bitte warten ..
Mitglied: Biber
12.04.2010 um 18:46 Uhr
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):
>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
Bitte warten ..
Mitglied: 89485
15.04.2010 um 06:59 Uhr
Danke für die Tipps =D

ist ebenfalls gelöst...
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...