In Windows Batch Dateien ist es machmal erforderlich, die Ausführung von Befehlen zu verzögern. In vielen Programmier- und Skriptsprachen erreicht man dies mit sleep oder wait Commands. Leider ist die Unterstützung dieser sleep und wait Befehle abhängig von der verwendeten Windows Version sehr unterschiedlich. An dieser Stelle werde ich kurz skizzieren, wie man das gewünschte Verhalten abhängig vom Betriebssystem erreichen kann.
Mit Bordmitteln
Die hier beschrieben Methoden kommen mit den Bordmitteln der Betriebssysteme aus.
Alle Windows Versionen
Unabhängig von der verwendeten Windows Version können Wartezeiten mit sekündiger Genauigkeit mit dem ping
Command realisiert werden. Der Parameter -n
gibt die Anzahl der auszuführenden Pings an. Der Abstand zwischen den Pings beträgt standardmäßig eine Sekunde. Über > NUL
wird die Ausgabe des Befehls ins Nirvana umgeleitet und somit nicht in der Kommandozeile ausgegeben.
ping -n <N> 127.0.0.1 > NUL
<N>
ist mit der gewünschten Dauer in Sekunden zu ersetzt.
Windows 95 / Windows 98 / Windows ME / Windows 2000
Hier bietet sich zusätzlich das choice
Command als Lösung an. Die eigentliche Aufgabe von choice
ist es dem Benutzer zu ermöglichen durch Entscheidungen (choice) den Skriptablauf zu beeinflussen. Durch Angabe einer maximalen Wartezeit über den Parameter /t
kann dieser Befehl aber zweckentfremden werden.
choice /c:123 /t:<N> > NUL
<N>
ist mit der gewünschten Dauer in Sekunden zu ersetzt.
Windows XP / Windows 2003 Server
Choice wurde durch das Set Command ersetzt und gehört nicht zum Lieferumfang von Windows XP und Abkömmlingen. Beschränkt man sich auf Bordmittel, bleibt hier nur die ping
-basierte Variante.
Windows Vista/ Windows 7
Mit Windows Vista führte Microsoft das timeout
Command ein. Das timeout
Command veranlasst den Command Processor die Ausführung eines Skripts für die über den Parameter /t
angegebene Zahl an Sekunden zu pausieren. Die Pause kann durch Tastendruck beendet werden. Über den Parameter /nobreak
kann Tastendrücken ignoriert werden.
timeout /T <N> > nul
<N>
ist mit der gewünschten Dauer in Sekunden zu ersetzt.
Alternativ steht ab Windows Vista auch wieder choice
zur Verfügung, dessen Verwendung bereits beschrieben wurde.
Mit zusätzlicher Software
Das sleep
Command ist Teil der Resource Kits der jeweiligen Betriebssysteme. Mittels sleep
können Wartezeiten mit sekündiger Genauigkeit realisiert werden. Das sleep
Command ist wie folgt zu verwenden.
sleep <N>
<N>
ist mit der gewünschten Dauer in Sekunden zu ersetzt.
Windows 98 Resource Kit – sleep .exe
ftp://ftp.microsoft.com/Services/TechNet/samples/PS/Win98/Reskit/SCRPTING/SLEEP.EXE
Windows NT 3.1 Resource Kit – sleep .exe
ftp://ftp.microsoft.com/bussys/winnt/winnt-public/reskit/nt31/i386/reskit.exe
Windows NT 3.5 Resource Kit – sleep .exe
ftp://ftp.microsoft.com/bussys/winnt/winnt-public/reskit/nt35/i386/i386.exe
Windows Server 2003 Resource Kit Tools – sleep .exe
http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en
Alternativ gibt es weitere Programme von anderen Anbietern.