Ein Batch-Skript sollte eine gewisse Zeit warten, bevor es weiter ausgeführt wird, im Regelfall löst man dies mit “timeout /t <Sekunden>”. Leider funktioniert das nicht, wenn das Skript z.B. via PsExec oder via AutoIt Run (wenn die Ausgabe verborgen ist) ausgeführt wird.

Im Testlauf wurde das Skript, bevor es als Aufgabe angelegt wurde, manuell ausgeführt. Es folgte nach den ausgeführten Befehlen bei “timeout…” dann

FEHLER: Die Eingabeumleitung wird nicht unterstützt. Prozess wird unverzüglich beendet.

bzw. auf Englisch:

ERROR: Input redirection is not supported, exiting the process immediately.

Ein potentieller Workaround den man im Netz findet besteht darin, “choice” zu verwenden:

choice /t 10 /C JN /CS /D J

Das klappt ohne PsExec wunderbar, aber mit bleibt die Abfrage endlos stehen. Ergo ist das leider keine Lösung.

Als weiteres könnte man nahezu klassisch mit Ping basteln. Wem das zu ungenau von der Zeit ist, muss eine andere Lösung nehmen, wie z.B. Sleep, wait, etc. von Dritt-Anbietern wie Ulrich Bien:

DOS-Kommando Sleep: Endlich einmal Pause machen!!

Für das genannte Vorhaben wurde auf die Schnelle auf die alte “sleep.exe” aus dem Windows Server 2003 Ressource Kit zurückgegriffen. Diese läuft auch auf Windows Server 2012 R2 bislang wunderbar.

Update 10.03.2022

Kleinere Änderungen und Link aktualisiert. Die “Sleep.exe” von Ulrich Bien in der Ausführung als C-Programm funktioniert ebenfalls ohne Probleme.