Artikelbild

Pause in Windows Barchdateien

Während in Linux der Befehl sleep die Ausführung eines Script für einen gewissen Zeitraum unterbricht, kennt Windows zwar neuerdings den Befehl Timeout, ältere Versionen liefern diesen jedoch noch nicht mit. Dieser Artikel zeigt eine einfache Möglichkeit, ohne Zusatzsoftware die Funktion von sleep auf solchen Systemen nachzubilden.

Natürlich gibt es verschiedenste Nachbauten, die den gleichen Zweck verfolgen. Das Einbringen fremder Binaries in Windows-Systeme, nur um dem Administrator das Schreiben einer mehr oder weniger wichtigen Batchdatei zu ermöglichen, ist aber nicht überall erwünscht. Auch Script-Alternativen über VB oder ähnliche Sprachen führen oft zu mehr Ärger mit Virenscannern, inkompatiblen Versionen oder per Policy deaktiviertem VB.

Über einen kleinen Umweg kann man den Befehl ping dazu zweckentfremden, das gewünschte Ergebnis bereitzustellen. So ist ein sleep-Kommando ganz ohne Zusatzsoftware oder den Aufruf fragwürdiger Scripts möglich:

ping -n 1 -l 1 240.0.0.0 >NUL

Der Befehl ping hat bei Windows einen Timeout von exakt einer Sekunde. Sendet man nun einen Ping an eine Adresse, die definitiv nicht existiert, dauert die Ausführung des also Kommandos genau eine Sekunde.

Über den Parameter -n kann eingestellt werden, wie viele Pings versandt werden sollen bzw. wie viele Sekunden gewartet werden soll. Lässt man ihn weg, gilt der Standardwert 4.

Die Option -l 1 reduziert die Paketgröße auf 1 Byte und somit die unnötige Last für die Netzwerkschnittstelle auf ein nicht bemerkbares Minimum.

Wer nicht mit Schritten von einer Sekunde leben kann und z.B. 1,5 Sekunden benötigt, der kann mit dem Parameter -w den Timeout ändern. Die Angabe erfolgt in Millisekunden, wobei der kleinstmögliche Wert 10 ist. Dieses Beispiel wartet also genau 1,5 Sekunden:

ping -n 3 -l 500 240.0.0.0 >NUL

Kommentar hinterlassen