870 Stimmen

Wie man in einer Batch-Datei/cmd fünf Sekunden lang schlafen kann

Das Snipping-Tool von Windows kann den Bildschirm erfassen, aber manchmal möchte ich den Bildschirm nach fünf Sekunden erfassen, z. B. um ein Bild aufzunehmen, das von der Webcam angezeigt wird (führen Sie das Skript aus und lächeln Sie in die Kamera, zum Beispiel).

Wie kann ich in einer Batch-Datei 5 Sekunden lang schlafen?

27 Stimmen

Kurze Antwort für alle, die hier landen: Seit Windows Vista gibt es eine native Lösung: TIMEOUT . Verweise: SS64 , Rob van der Woude .

3 Stimmen

Es gibt Timeout Befehl, der sekundenlang wartet. Falls ein Millisekunden-Schlaf benötigt wird, kann der Powershell-Befehl Start-Schlaf verwendet werden können. Um 50ms in cmd zu schlafen: powershell Start-Sleep -m 50

0 Stimmen

@Pavel: Man kann auch einen Ping an einen nicht existierenden Host missbrauchen, um für Millisekunden zu schlafen.

5voto

Dani Punkte 13900

Sie können verwenden VBScript zum Beispiel die Datei myscript.vbs :

set wsobject = wscript.createobject("wscript.shell")

do while 1=1
    wsobject.run "SnippingTool.exe",0,TRUE
    wscript.sleep 3000
loop

Batch-Datei:

cscript myscript.vbs %1

5voto

Rober Punkte 51

Eine Verbesserung des vom Benutzer Aacini vorgeschlagenen Codes. Er hat eine Auflösung von Hundertstelsekunden und schlägt nicht fehl, wenn die Zeit 23:59:59,99 erreicht:

for /f "tokens=1,2,3,4 delims=:," %%A in ("%TIME%") do set /a HH=%%A, MM=1%%B-100, SS=1%%C-100, CC=1%%D-100, TBASE=((HH*60+MM)*60+SS)*100+CC

:: Example delay 1 seg.
set /a TFIN=%TBASE%+100

:ESPERAR
for /f "tokens=1,2,3,4 delims=:," %%A in ("%TIME%") do set /a HH=%%A, MM=1%%B-100, SS=1%%C-100, CC=1%%D-100, TACTUAL=((HH*60+MM)*60+SS)*100+CC

if %TACTUAL% lss %TBASE% set /a TACTUAL=%TBASE%+%TACTUAL%
if %TACTUAL% lss %TFIN% goto ESPERAR

4voto

Xavi Punkte 117

Am einfachsten habe ich es so gemacht:

Laden Sie die Datei Sleep.exe herunter unter http://www.sleepcmd.com/ . Die .exe-Datei sollte sich in demselben Ordner befinden wie das von Ihnen geschriebene Programm!

4voto

Aacini Punkte 61728

Ich verwende die folgende Methode, die vollständig auf den Möglichkeiten von Windows XP basiert, um eine Verzögerung in einer Stapeldatei durchzuführen:

Datei DELAY.BAT

@ECHO OFF
REM DELAY seconds

REM GET ENDING SECOND
FOR /F "TOKENS=1-3 DELIMS=:." %%A IN ("%TIME%") DO SET /A H=%%A, M=1%%B%%100,     S=1%%C%%100, ENDING=(H*60+M)*60+S+%1

REM WAIT FOR SUCH A SECOND
:WAIT
FOR /F "TOKENS=1-3 DELIMS=:." %%A IN ("%TIME%") DO SET /A H=%%A, M=1%%B%%100, S=1%%C%%100, CURRENT=(H*60+M)*60+S
IF %CURRENT% LSS %ENDING% GOTO WAIT

Sie können auch den Tag in die Berechnung einbeziehen, damit die Methode auch funktioniert, wenn das Verzögerungsintervall über Mitternacht hinausgeht.

4voto

AjV Jsy Punkte 5481

Dies kann mit zwei einfachen Zeilen in einer Batch-Datei erreicht werden: Schreiben Sie eine temporäre .vbs Datei in der %temp% Ordner und rufen Sie ihn auf:

echo WScript.Sleep(5000) >"%temp%\sleep.vbs"
cscript "%temp%\sleep.vbs"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X