Windows 상자에서 무언가를 자동화하기 위해 배치 파일을 작성할 때 몇 초 동안 (보통 테스트 / 대기 루프에서 프로세스가 시작될 때까지) 실행을 일시 중지해야했습니다. 당시 내가 찾은 최고의 솔루션은 핑을 사용하여 원하는 효과를 얻습니다. 다음과 같이 구현 된 호출 가능한 “wait.bat”를 설명하는 여기 에서 더 나은 작성을 발견했습니다 .
@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul
그런 다음 대기 시간 (초)을 지나서 고유 한 배치 파일에 wait.bat 호출을 포함시킬 수 있습니다.
분명히 Windows 2003 Resource Kit는 유닉스와 같은 절전 명령을 제공합니다 (마지막으로!). 한편, 여전히 Windows XP, Windows 2000 또는 (슬프게도) Windows NT 를 사용하는 사람들에게는 더 좋은 방법이 있습니까?
허용 된 답변sleep.py
에서 스크립트를 수정하여 명령 줄에 인수가 전달되지 않으면 기본적으로 1 초로 설정되었습니다.
import time, sys
time.sleep(float(sys.argv[1]) if len(sys.argv) > 1 else 1)
답변
최신 정보
timeout
다른에 설명 된대로 이후 윈도우 비스타에서 사용할 수 있으며 명령, 명령, 사용되어야한다 대답 이 질문에. 여기에 오는 것은 오래된 대답입니다.
이전 답변
파이썬이 설치되어 있거나 설치에 신경 쓰지 않는다면 (다른 용도도 있습니다 🙂 다음 sleep.py 스크립트를 만들고 PATH 어딘가에 추가하십시오.
import time, sys
time.sleep(float(sys.argv[1]))
필요한 경우 1 초 미만의 일시 중지 (예 : 1.5 초, 0.1 등)가 가능합니다. 을 호출하지 sleep
않고 PATHEXT 환경 변수에 확장자를 sleep.py
추가 할 수 있습니다 .PY
. Windows XP에서는 다음에서 편집 할 수 있습니다.
내 컴퓨터 → 속성 (메뉴) → 고급 (탭) → 환경 변수 (버튼) → 시스템 변수 (프레임)
답변
이 timeout
명령은 Windows Vista 이상에서 사용할 수 있습니다.
c:\> timeout /?
TIMEOUT [/T] timeout [/NOBREAK]
Description:
This utility accepts a timeout parameter to wait for the specified
time period (in seconds) or until any key is pressed. It also
accepts a parameter to ignore the key press.
Parameter List:
/T timeout Specifies the number of seconds to wait.
Valid range is -1 to 99999 seconds.
/NOBREAK Ignore key presses and wait specified time.
/? Displays this help message.
NOTE: A timeout value of -1 means to wait indefinitely for a key press.
Examples:
TIMEOUT /?
TIMEOUT /T 10
TIMEOUT /T 300 /NOBREAK
TIMEOUT /T -1
참고 : 입력 리디렉션에서는 작동하지 않습니다. 간단한 예 :
C:\>echo 1 | timeout /t 1 /nobreak
ERROR: Input redirection is not supported, exiting the process immediately.
답변
ping
요약 된 방법을 사용하는 것은 더 많은 실행 파일을 추가하거나 다른 소프트웨어를 설치할 수 없거나 원하지 않을 때 수행하는 방법입니다.
존재하지 않는 것을 핑 (ping)해야하고, -w
그 시간이 지나면 (localhost와 같은) 시간 이 있는 핑을하지 않고 플래그가 해당 시간 후에 실패하도록해야합니다 -n
. 이렇게하면 1 초 미만의 시간을 처리 할 수 있으며 약간 더 정확하다고 생각합니다.
예 :
(1.1.1.1이 취해지지 않은 테스트)
ECHO Waiting 15 seconds
PING 1.1.1.1 -n 1 -w 15000 > NUL
or
PING -n 15 -w 1000 127.1 >NUL
답변
SLEEP.exe
Windows XP에도 설치할 수있는 Windows Server 2003 Resource Kit 와 같은 대부분의 Resource Kit에 포함되어 있습니다.
Usage: sleep time-to-sleep-in-seconds
sleep [-m] time-to-sleep-in-milliseconds
sleep [-c] commited-memory ratio (1%-100%)
답변
여기에서 찾은 답변에 동의하지 않습니다.
배치 파일에서 지연을 수행하기 위해 Windows XP 기능을 완전히 기반으로 한 다음 방법을 사용합니다.
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
지연 간격이 자정을 지날 때도 방법이 작동하도록 계산에 요일을 삽입 할 수도 있습니다.
답변
비슷한 문제에 직면했지만 동일한 작업을 수행하기 위해 매우 짧은 C ++ 콘솔 응용 프로그램을 중단했습니다. 전체 리소스 키트를 다운로드 / 설치하는 것보다 MySleep.exe 1000을 실행하기 만하면 됩니다.
#include <tchar.h>
#include <stdio.h>
#include "Windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
if (argc == 2)
{
_tprintf(_T("Sleeping for %s ms\n"), argv[1]);
Sleep(_tstoi(argv[1]));
}
else
{
_tprintf(_T("Wrong number of arguments.\n"));
}
return 0;
}