Wie lasse ich eine Batch-Datei einige Sekunden warten / schlafen?

57

Ich verwende eine Batch-Datei, um einige der Programme zu starten, die ich im Hintergrund ausführen muss. Bisher hatte ich den Befehl pause verwendet, um ihn auszuführen, nachdem einige der anderen Starts abgeschlossen waren. Ich würde es vorziehen, die Wait- oder Sleep-Befehle zu verwenden, aber sie scheinen nicht in Windows 7 enthalten zu sein.

Weiß jemand, wie man diese Befehle zurücksetzt, oder eine andere Methode, die die gleichen Ergebnisse erzielt?

Cegorach
quelle
1
Oder Sie könnten Powershell verwenden: stackoverflow.com/questions/1741490/…
Berzemus
Wünschte, eine sleep.exe würde von MS ab 2017 standardmäßig im Ordner system32 oder in den Programmdateien / an einem beliebigen Standardspeicherort bereitgestellt. Einfache c exe 40k oder so!
tgkprog
Gefällt mir sleepcmd.com
tgkprog

Antworten:

30

Es gibt viele Hilfsprogramme für den Ruhezustand, die Sie herunterladen und in Ihren System32-Ordner ablegen können. Eines davon wird mit dem Windows Server 2003 Resource Kit namens bereitgestellt sleep.exe.

Sie können auch den Ping-Trick verwenden:

:sleep
ping 127.0.0.1 -n 2 -w 1000 > NUL
ping 127.0.0.1 -n %1 -w 1000 > NUL

Von irgendwo in Ihrer Batch-Datei aus können Sie es dann folgendermaßen aufrufen:

CALL :sleep 1
John T
quelle
1
Der Ping-Trick könnte als vorübergehende Lösung verwendet werden, aber ich würde einen vorziehen, der den Prozess nur unterbricht, anstatt dass er für die Zeit viel zu tun hat. Welches der Elemente in der Liste, die Sie verlinkt haben, war das, wonach ich gesucht habe?
Cegorach
Sie wollen sleep.exe
John T
Ich habe versucht, CALL: sleep 1 aus einer Test-Batch-Datei und es antwortete mit "System kann das angegebene Batch-Etikett nicht finden
SLEEP
weil Sie die Subroutine, die ich oben gepostet habe, hinzufügen müssen. Call ruft nur die Subroutine auf, also die drei Zeilen, die ich über dem call-Befehl gepostet habe.
John T
126

Sie können den timeoutBefehl verwenden:

Dieses Dienstprogramm akzeptiert einen Timeout-Parameter, um auf den angegebenen Zeitraum (in Sekunden) zu warten oder bis eine Taste gedrückt wird. Es akzeptiert auch einen Parameter zum Ignorieren des Tastendrucks.

Zum Beispiel, um 10 Sekunden zu warten:

TIMEOUT /T 10

Für mehr Details:

TIMEOUT /?
Alex S
quelle
1
Warum ist dies nicht die richtige Antwort? der aktuelle ist weit hergeholt, wenn Sie mich fragen
Dany Khalife
7
@Dany: weil das Thema von 2009 stammt, als die meisten Installationen XP waren. Vor Vista war Timeout nur in den Server-Editionen und im Resource Kit enthalten, nicht bei einer normalen XP-Installation. In der Tat lautet die richtige Antwort heutzutage Timeout.
Mivk
6
@DanyKhalife Sofern Sie den Prozess nicht im Hintergrund ausführen möchten. "FEHLER: Die Eingabeumleitung wird nicht unterstützt und der Vorgang wird sofort beendet."
Annan
8
timeout /t <seconds> /nobreak > NUL
Prichard
quelle
Funktioniert super! calc && timeout 3 && notepad
Tamara Wijsman
6

Es gibt auch

waitfor SomethingThatIsNeverHappening /t 10

Das wird zwischen 1 und 99999 Sekunden warten.

Geflügel
quelle
-1

Wenn Sie Python installiert haben (und den Installationspfad zu Ihrer Umgebungsvariablen hinzugefügt haben), können Sie Python das Schlafen mit etwas anderem überlassen:

echo from time import sleep; sleep(3) | python

(Wenn Sie Windows Vista oder höher haben, ist dies timeoutnatürlich der richtige Weg.)

Beschützer eins
quelle