windows länge - Wie in der Windows-Eingabeaufforderung für 5 Sekunden schlafen? (oder DOS)




15 Answers

Ein Hack, den ich gesehen habe, ist, den Ping-Befehl zu missbrauchen:

ping 127.0.0.1 -n 6 > nul

127.0.0.1 ist die IP-Adresse des lokalen Hosts.
-n 6 - es gibt eine 1s Verzögerung zwischen jedem Ping, also für eine 5s Verzögerung müssen Sie 6 Pings tun.
> nul - unterdrückt die Ausgabe.

meta title

Diese Frage hat hier bereits eine Antwort:

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

Also könnte ich in Ruby so etwas tun

sleep 3
system('c:/windows/system32/SnippingTool.exe')

aber nicht jeder Computer hat Ruby, also wie mache ich das in einer .bat-Datei? (etwas, das auf den meisten PCs mit dem Snipping-Tool lauffähig ist).

Das Problem ist, dass in einer BAT-Datei kein "Schlaf" verfügbar ist.




Versuchen Sie den Choice . Es gibt es seit MSDOS 6.0, und sollte es tun.

Verwenden Sie den Parameter / T, um das Zeitlimit in Sekunden und den Parameter / D anzugeben, um die Standardauswahl anzugeben und die ausgewählte Auswahl zu ignorieren.

Die einzige Sache, die ein Problem sein könnte, ist, wenn der Benutzer eines der Auswahlzeichen vor Ablauf des Zeitlimits eingibt. Ein partieller Workaround soll die Situation verschleiern - benutze das Argument / N, um die Liste der gültigen Auswahlmöglichkeiten zu verbergen, und habe nur 1 Zeichen in der Auswahlmenge, so dass es weniger wahrscheinlich ist, dass der Benutzer eine gültige Auswahl vorgibt Timeout läuft ab.

Unten ist der Hilfetext zu Windows Vista. Ich denke es ist das selbe unter XP, aber schau dir den Hilfetext auf einem XP Computer an.

C:\>CHOICE /?

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

Description:
    This tool allows users to select one item from a list
    of choices and returns the index of the selected choice.

Parameter List:
   /C    choices       Specifies the list of choices to be created.
                       Default list is "YN".

   /N                  Hides the list of choices in the prompt.
                       The message before the prompt is displayed
                       and the choices are still enabled.

   /CS                 Enables case-sensitive choices to be selected.
                       By default, the utility is case-insensitive.

   /T    timeout       The number of seconds to pause before a default
                       choice is made. Acceptable values are from 0 to
                       9999. If 0 is specified, there will be no pause
                       and the default choice is selected.

   /D    choice        Specifies the default choice after nnnn seconds.
                       Character must be in the set of choices specified
                       by /C option and must also specify nnnn with /T.

   /M    text          Specifies the message to be displayed before
                       the prompt. If not specified, the utility
                       displays only a prompt.

   /?                  Displays this help message.

   NOTE:
   The ERRORLEVEL environment variable is set to the index of the
   key that was selected from the set of choices. The first choice
   listed returns a value of 1, the second a value of 2, and so on.
   If the user presses a key that is not a valid choice, the tool
   sounds a warning beep. If tool detects an error condition,
   it returns an ERRORLEVEL value of 255. If the user presses
   CTRL+BREAK or CTRL+C, the tool returns an ERRORLEVEL value
   of 0. When you use ERRORLEVEL parameters in a batch program, list
   them in decreasing order.

Examples:
   CHOICE /?
   CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."
   CHOICE /T 10 /C ync /CS /D y
   CHOICE /C ab /M "Select a for option 1 and b for option 2."
   CHOICE /C ab /N /M "Select a for option 1 and b for option 2."



Sie können es mit timeout :

Dies wird sichtbar sein: timeout 5

Dies wird nicht sichtbar timeout 5 >nul




Können wir nicht waitfor /T 180 ?

waitfor /T 180 pause führt zu "ERROR: Zeitüberschreitung beim Warten auf 'Pause'."

waitfor /T 180 pause >nul wird diesen "Fehler" unter den Teppich kehren

Der Befehl waitfor sollte nach Windows95 im Windows-Betriebssystem vorhanden sein

In der Vergangenheit habe ich eine ausführbare Datei mit dem Namen sleep heruntergeladen, die in der Befehlszeile funktioniert, nachdem Sie sie in Ihren Pfad eingegeben haben.

Beispiel: sleep shutdown -r -f /m \\yourmachine obwohl beim Herunterfahren jetzt die Option -t eingebaut ist




SLEEP 5 war in einigen Windows Resource Kits enthalten.

TIMEOUT 5 war in einigen Windows Resource Kits enthalten, ist aber jetzt ein Standardbefehl in Windows 7 und 8 (nicht sicher über Vista).

PING 1.1.1.1 -n 1 -w 5000 >NUL Für jede MS-DOS- oder Windows-Version mit einem TCP / IP-Client kann PING verwendet werden, um die Ausführung für einige Sekunden zu verzögern.

NETSH badcommand (nur Windows XP / Server 2003) oder CHOICE

Dieser Link wird Ihnen mehr helfen .




Zwei Antworten:

Erstens, um eine Batch-Datei zu verzögern, einfach ohne all die stumpfen Methoden, die die Leute vorgeschlagen haben:

timeout /t <TimeoutInSeconds> [/nobreak] 

http://technet.microsoft.com/en-us/library/cc754891.aspx

Zweitens, erwähnenswert, dass es zwar nicht genau das ist, was Sie wollen, indem Sie das eingebaute Windows-Schnipsel-Tool verwenden, können Sie jedoch einen Snip auslösen, ohne die Maus zu benutzen. Führen Sie das Schnipetool aus, verlassen Sie den aktuellen Ausschnitt, lassen Sie das Werkzeug jedoch weiterhin aktiv und drücken Sie Strg + Druck, wenn der Schnitt ausgeführt werden soll. Dies sollte sich nicht störend auf das auswirken, was Sie versuchen zu schnippen.




Sie können 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



Bei Verwendung von "ping" wird -n das Zeitlimit nur dann bestimmen, wenn keine Antwort auf den Ping vorliegt. In diesem Beitrag erfahren Sie, wie Sie DELAY als Batch-Datei implementieren.

DELAY-Befehl als Batch-Datei implementiert

Ich könnte nur die wichtigen Bits kopieren, aber der ganze Beitrag ist sehr nützlich.




Ich verwende die folgende Methode, die vollständig auf Windows XP-Funktionen basiert, um eine Verzögerung in einer Batchdatei 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 den Tag auch in die Berechnung einfügen, so dass die Methode auch funktioniert, wenn das Verzögerungsintervall über Mitternacht verstreicht.




Am einfachsten habe ich das gemacht:

Laden Sie die Sleep.exe unter http://www.sleepcmd.com/ herunter. Die .exe-Datei sollte im selben Ordner wie das Programm sein, das Sie geschrieben haben!




zwei weitere Möglichkeiten, die von XP und höher an alles funktionieren sollten:

mit w32tm

w32tm /stripchart /computer:localhost /period:5 /dataonly /samples:2  1>nul 

mit typeperf:

typeperf "\System\Processor Queue Length" -si 5 -sc 1 >nul



In Windows XP sp3 können Sie den Befehl "Ruhezustand" verwenden




Nun, das funktioniert, wenn Sie Wahl oder Ping haben.

@echo off
echo.
if "%1"=="" goto askq
if "%1"=="/?" goto help
if /i "%1"=="/h" goto help
if %1 GTR 0 if %1 LEQ 9999 if /i "%2"=="/q" set ans1=%1& goto quiet
if %1 GTR 0 if %1 LEQ 9999 set ans1=%1& goto breakout
if %1 LEQ 0 echo %1 is not a valid number & goto help
if not "%1"=="" echo.&echo "%1" is a bad parameter & goto help
goto end

:help
echo SLEEP runs interactively (by itself) or with parameters (sleep # /q )
echo where # is in seconds, ranges from 1 - 9999
echo Use optional parameter /q to suppress standard output 
echo or type /h or /? for this help file
echo.
goto end

:askq
set /p ans1=How many seconds to sleep? ^<1-9999^> 
echo.
if "%ans1%"=="" goto askq
if %ans1% GTR 0 if %ans1% LEQ 9999 goto breakout
goto askq

:quiet
choice /n /t %ans1% /d n > nul
if errorlevel 1 ping 1.1.1.1 -n 1 -w %ans1%000 > nul
goto end

:breakout
choice /n /t %ans1% /d n > nul
if errorlevel 1 ping 1.1.1.1 -n 1 -w %ans1%000 > nul
echo Slept %ans1% second^(s^)
echo.

:end

Benennen Sie es einfach sleep.cmd oder sleep.bat und führen Sie es aus




Bei neueren Windows-Betriebssystemversionen können Sie den Befehl verwenden

sleep /w2000

In einem DOS-Skript ( .cmd oder .bat ) warten Sie 2s (2000 ms - ersetzen Sie die Zeit in ms, die Sie benötigen). Achten Sie darauf, das Argument /w einzuschließen - ohne es wird der ganze Computer eingeschlafen! Sie können -m anstelle von /m wenn Sie möchten, und optional einen Doppelpunkt (:) zwischen dem w und der Zahl.




Es gibt!

SLEEP <seconds>

Wenn Sie es im Millisekunden-Modus wollen:

SLEEP -m <time in milliseconds>

Dies ist hilfreicher als TIMEOUT da TIMEOUT mit einem Klick auf eine Taste oder CTRL + C (für TIMEOUT /t <secs> /nobreak ) TIMEOUT /t <secs> /nobreak . SLEEP kann nicht durch irgendetwas abgebrochen werden (außer beim Schließen-Button: p)

Andere sind PING . PING benötigt jedoch eine Internetverbindung, da Sie die Verbindung einer Site aufzeichnen.




Related

windows command-line batch-file sleep