Wie pausiere ich die Ausführung in einer Windows-Batchdatei zwischen einem Befehl und dem nächsten?
windows
batch-file
batch
Massimo
quelle
quelle
Antworten:
Die richtige Art, in einer Batch-Datei zu schlafen, ist die Verwendung des
timeout
in Windows 2000 eingeführten Befehls.So warten Sie zwischen 29 und 30 Sekunden :
Das Timeout würde unterbrochen, wenn der Benutzer eine Taste drückt. Der Befehl akzeptiert jedoch auch den optionalen Schalter
/nobreak
, der alles ignoriert, was der Benutzer drücken kann, mit Ausnahme eines expliziten BefehlsCTRL-C
:Wenn Sie nicht möchten, dass der Befehl den Countdown auf dem Bildschirm ausgibt, können Sie die Ausgabe umleiten an
NUL
:quelle
Da es auch hier gilt, kopiere ich meine Antwort von einer anderen Seite .
Wenn Sie Ping verwenden möchten, gibt es einen besseren Weg. Sie möchten eine Adresse anpingen, die nicht vorhanden ist, damit Sie eine Zeitüberschreitung mit Millisekundengenauigkeit angeben können. Glücklicherweise ist eine solche Adresse in einem Standard (RFC 3330) definiert, und das ist es auch
192.0.2.x
. Dies ist nicht erfunden, es ist wirklich eine Adresse mit dem einzigen Zweck, nicht zu existieren (es ist möglicherweise nicht klar, aber es gilt auch in lokalen Netzwerken):Verwenden Sie, um für 123 Millisekunden zu schlafen
ping 192.0.2.1 -n 1 -w 123 >nul
quelle
Ping
ist einfach das falsche Werkzeug für den Job.Sie können auch einen Ping an localhost einfügen. Dies dauert 4 Sekunden (standardmäßig). Es wird von manchen als Kludge angesehen, funktioniert aber trotzdem ganz gut.
Der Befehl:
ping 127.0.0.1
quelle
ping
Ihr Betriebssystem mitgeliefert wird oder nicht . Wenn Sie genug über '95 '98 oder ME besorgt sind , dann sollten Sie als gleichermaßen besorgt über 6,22 sein , was nicht hatping
entwederDisclaimer : dies ist nicht die „ideale“ Lösung, so nicht die Mühe , mich über den Kopf schlägt mit dieser wie denjenigen getan zu empfehlen
ping
...Verwenden Sie wenn möglich
timeout
auf jeden Fall. Wie in den Kommentaren erwähnt, ist dies jedoch nicht immer eine Option (z. B. im nicht interaktiven Modus). Danach stimme ich zu, dass derping
"Kludge" die nächstbeste Option ist, da er sehr einfach ist. Das heißt, ich biete eine andere Option an ... binde ein paar VB-Skripte ein .Die Basis dieser Lösung ist darüber hinaus vielseitig einsetzbar. Oft kann VBS Dinge tun, die Batch nicht können, oder zumindest drastisch einfacher. Mit der hier abgebildeten Technik können Sie beides mischen (nicht "nahtlos", sondern "funktional" ...).
Hier ist ein Einzeiler, um ein temporäres Skript zu erstellen, es auszuführen und dann zu löschen. Das Skript erledigt den Ruhezustand für Sie (in diesem Beispiel für 3 Sekunden).
Hier ist im Grunde das Gleiche, etwas anders geschrieben:
Und dann schließlich, wie
ping
,CScript
selbst hat eine Timeout - Option! Wenn Sie also eine Endlosschleife im Skript eingeben, können Sie den Interpreter die Dauer erzwingen lassen. Beachten Sie, dass dies ein "ausgelasteter" Vorgang ist, der die CPU belastet, und daher empfehle ich ihn nicht, wenn Sie dieWScript.Sleep
Prozedur verwenden können, aber der Vollständigkeit halber stelle ich ihn als konzeptionelle Option vor:quelle