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.
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Danke für diese äusserst nützliche Information, Andy!
Die genau gleiche Fehlermeldung tritt bei der Verwendung durch SABnzbd auf.
Ruft diese Software ein Batch-Skript mit einem TIMEOUT darin auf, verursacht das ebenfalls die erwähnte FEHLER-Meldung.
Das ist ziemlich irreführend, denn die eigentliche Verarbeitung vorheriger Befehle funktioniert unabhängig von der Fehlermeldung einwandfrei.