HOWTO · batch

Wie man in einer Batch-Datei X Sekunden wartet (Sleep)

Erfahren Sie, wie Sie eine Batch-Datei für eine Anzahl von Sekunden pausieren: mit dem integrierten timeout-Befehl oder dem ping-Workaround für Systeme, auf denen timeout nicht verfügbar ist.

Auf dieser Seite

Bei der Arbeit mit Batch-Dateien müssen Sie die Ausführung möglicherweise für eine bestimmte Dauer pausieren. Ob Sie auf den Abschluss eines Prozesses warten oder einfach eine Verzögerung für die Benutzerinteraktion hinzufügen, es ist unerlässlich zu wissen, wie man eine Sleep- oder Wartefunktion implementiert.

In diesem Artikel werden wir zwei effektive Methoden untersuchen, um dies in einer Batch-Datei zu erreichen: die Verwendung des timeout-Befehls und des ping-Befehls. Jede Methode ist unkompliziert und lässt sich leicht in Ihre Skripte integrieren, was eine bessere Kontrolle über den Ausführungsfluss ermöglicht. Tauchen wir in diese Lösungen ein und lernen wir, wie man Zeit in Ihren Batch-Dateien effektiv verwaltet.

Verwenden des timeout-Befehls

Der timeout-Befehl ist die unkomplizierte Möglichkeit, eine Batch-Datei für eine bestimmte Anzahl von Sekunden zu pausieren. Er ist in Windows integriert (seit Vista) und einfach zu verwenden: /t gibt die Anzahl der zu wartenden Sekunden an, die von -1 (unbegrenzt auf einen Tastendruck warten) bis 99999 reichen kann. So können Sie ihn implementieren:

@echo off
echo Waiting for 10 seconds...
timeout /t 10
echo Done waiting!

Ausgabe:

Waiting for 10 seconds...
Done waiting!

In diesem Beispiel zeigt die Batch-Datei eine Nachricht an, die besagt, dass sie 10 Sekunden wartet. Der Befehl timeout /t 10 pausiert die Ausführung für 10 Sekunden und zählt dabei auf dem Bildschirm herunter; nach dem Warten gibt er „Done waiting!" aus, um anzuzeigen, dass die Pause beendet ist. Sie können die Anzahl der Sekunden anpassen, indem Sie den Wert nach /t ändern.

Standardmäßig beendet jeder Tastendruck das Warten vorzeitig. Fügen Sie /nobreak hinzu — timeout /t 10 /nobreak — um Tastendrücke zu ignorieren (Ctrl+C stoppt das Skript weiterhin). Eine Einschränkung, die man kennen sollte: timeout kann nicht laufen, wenn die Standardeingabe des Skripts umgeleitet wird, zum Beispiel durch einen Scheduler oder ein anderes Programm; es gibt dann eine Fehlermeldung aus, anstatt zu warten, und genau dann ist der ping-Workaround unten nützlich.

Verwenden des ping-Befehls

Eine weitere Methode, um eine Verzögerung in einer Batch-Datei einzuführen, ist der ping-Befehl. Obwohl dieser Befehl hauptsächlich für die Netzwerkdiagnose verwendet wird, kann er umfunktioniert werden, um eine Pause zu erzeugen, weil jede Ping-Antwort etwa eine Sekunde braucht, um zurückzukommen. So geht es:

@echo off
echo Waiting for 5 seconds...
ping 127.0.0.1 -n 6 > nul
echo Done waiting!

Ausgabe:

Waiting for 5 seconds...
Done waiting!

In diesem Beispiel wartet die Batch-Datei 5 Sekunden, bevor sie fortfährt. Der Befehl ping 127.0.0.1 -n 6 sendet 6 Pings an den Localhost (127.0.0.1). Die erste Antwort kommt sofort zurück und jede weitere Antwort dauert ungefähr eine Sekunde, so dass 6 Pings eine Pause von etwa 5 Sekunden erzeugen — um N Sekunden zu warten, pingen Sie N+1-mal. Der Teil > nul unterdrückt die Ausgabe des ping-Befehls, so dass die Konsole ordentlich bleibt. Diese Methode ist ein Workaround und kein echter Sleep-Befehl, aber sie funktioniert auch dort, wo timeout nicht verfügbar ist oder nicht laufen kann, etwa auf älteren Windows-Versionen oder bei umgeleiteter Eingabe.

Fazit

Zusammenfassend ist das Wissen, wie man in einer Batch-Datei schläft oder wartet, eine wertvolle Fähigkeit, die Ihre Skripting-Fähigkeiten verbessern kann. Der timeout-Befehl ist die unkomplizierte, speziell dafür gebaute Option, während der ping-Befehl eine praktikable Alternative bietet, wenn timeout nicht verwendet werden kann. Durch die Implementierung dieser Methoden können Sie den Ausführungsfluss effektiv verwalten und die Benutzererfahrung in Ihren Batch-Skripten verbessern. Ob Sie Aufgaben automatisieren oder interaktive Skripte erstellen, diese Techniken werden Ihnen gute Dienste leisten.

FAQ

  1. Was ist eine Batch-Datei?
    Eine Batch-Datei ist eine Textdatei, die eine Reihe von Befehlen enthält, die vom Kommandozeileninterpreter in Windows der Reihe nach ausgeführt werden.

  2. Kann ich Sleep in Batch-Dateien auf älteren Windows-Versionen verwenden?
    Ja, Sie können den ping-Befehl als Workaround verwenden, wenn der timeout-Befehl nicht verfügbar ist.

  3. Wie lange kann ich mit dem timeout-Befehl warten?
    Der timeout-Befehl kann maximal 99999 Sekunden warten, was ungefähr 27,7 Stunden entspricht. Ein Wert von -1 wartet, bis eine Taste gedrückt wird.

  4. Gibt es eine Möglichkeit, das Timeout abzubrechen?
    Ja, Sie können vor Ablauf der Timeout-Zeit eine beliebige Taste drücken, um das Warten abzubrechen — es sei denn, der Befehl wurde mit /nobreak gestartet; dann stoppt ihn nur Ctrl+C.

  5. Kann ich diese Methoden in anderen Skripten als Batch-Dateien verwenden?
    Dies sind Befehle des Windows-Kommandozeileninterpreters, also funktionieren sie überall dort, wo cmd sie ausführt, einschließlich Batch-Dateien; in Unix-Shells sind sie nicht verfügbar.