Windows 배치: 절전
Windows 배치 스크립트를 몇 초 동안 기다리려면 어떻게 해야 합니까?
sleep그리고.wait작동하지 않는 것 같습니다(비활성화된 명령).
시도해 보세요
ping -n XXX 127.0.0.1 >nul
여기서 XXX는 대기 시간(초)에 1을 더한 값입니다.
이러한 명령이 작동하지 않는 이유를 알 수 없지만 시간 초과를 시도할 수도 있습니다.
timeout <delay in seconds>
timeout /t 10 /nobreak > NUL
/t대기 시간(초)을 지정합니다.
/nobreak키를 눌러도 시간 초과가 발생하지 않습니다(CTRL-C 제외).
> NUL명령의 출력을 억제합니다.
10초 대기:
choice /T 10 /C X /D X /N
Microsoft에는 직접 호출할 수 있는 절전 기능이 있습니다.
Usage: sleep time-to-sleep-in-seconds
sleep [-m] time-to-sleep-in-milliseconds
sleep [-c] commited-memory ratio (1%-100%)
배치 스크립트에서 sleep 1(예: sleep 1)이라고 하면 1초 동안 sleep할 수 있습니다.
IMO Ping은 이 사용 사례에서 약간의 해킹입니다.
순수 cmd.exe 스크립트의 경우 현재 시간을 수백 초 단위로 반환하는 이 코드 조각을 사용할 수 있습니다.
:gettime
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
set cc=%time:~-2%
set /A %1=hh*360000+mm*6000+ss*100+cc
goto :eof
그런 다음 이렇게 대기 루프에서 사용할 수 있습니다.
:wait
call :gettime wait0
:w2
call :gettime wait1
set /A waitt = wait1-wait0
if !waitt! lss %1 goto :w2
goto :eof
그리고 모든 조각을 합치는 것:
@echo off
setlocal enableextensions enabledelayedexpansion
call :gettime t1
echo %t1%
call :wait %1
call :gettime t2
echo %t2%
set /A tt = (t2-t1)/100
echo %tt%
goto :eof
:wait
call :gettime wait0
:w2
call :gettime wait1
set /A waitt = wait1-wait0
if !waitt! lss %1 goto :w2
goto :eof
:gettime
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
set cc=%time:~-2%
set /A %1=hh*360000+mm*6000+ss*100+cc
goto :eof
여기서 사용되는 명령에 대한 자세한 설명은 다음을 참조하십시오.HELP SET그리고.HELP CALL정보.
아, 윈도우는 음...재밌는.효과:
choice /T 1 /d y > NUL
choice예 또는 아니오를 묻는 프롬프트를 표시합니다. /d y예를 선택하도록 합니다. /t 1입력하기 전에 잠시 기다리도록 합니다. > NUL출력을 스퀴즈합니다.
Windows 2003 리소스 키트에는sleep배치 파일.PowerShell로 이동하는 경우 다음을 사용할 수 있습니다.
Start-Sleep -s <time to sleep>
아니면 그런 비슷한 것.
저는 JScript에 의존합니다.다음과 같은 JScript 파일이 있습니다.
// This is sleep.js
WScript.Sleep( WScript.Arguments( 0 ) );
그리고 배치 파일 안에서 CScript로 실행합니다(보통은 그렇습니다).%SystemRoot%\system32\cscript.exe)
rem This is the calling inside a BAT file to wait for 5 seconds
cscript /nologo sleep.js 5000
방금 Win32 Sleep API 기능이라고 하는 나만의 sleep을 작성했습니다.
RJL 소프트웨어에는 DelayExec.exe라는 작은 유틸리티가 있습니다.이를 통해 프로그램의 지연된 시작을 일괄 실행하고 Windows 레지스트리를 실행할 수 있습니다(가장 유용한 것은...).Windows/.../레지스트리 실행).
사용 예:
delayexec "C:\WINDOWS\system32\notepad.exe" 10
또는 절전 명령으로:
delayexec "nothing" 10
개인적으로 펄 원라이너를 사용합니다.
perl -e "sleep 10;"
10초만 기다리면 됩니다.Git 설치의 일부로 이미 개발 컴퓨터에 Perl이 설치되어 있을 가능성이 있습니다. 그렇지 않으면 ActiveState나 Strawberry 등에서 Perl을 설치해야 하지만, 어차피 설치하는 것 중 하나입니다.
또는 GnuWin32에서 sleep 명령을 설치할 수 있습니다.
언급URL : https://stackoverflow.com/questions/4317020/windows-batch-sleep
'programing' 카테고리의 다른 글
| 열 이름이 있는 행당 하나의 열을 표시하는 psql의 대체 출력 형식 (0) | 2023.05.24 |
|---|---|
| mongodb에서 $와 $match를 사용합니다. (0) | 2023.05.24 |
| 레코드 대 클래스 대 구조를 사용할 때 (0) | 2023.05.24 |
| 특정 저장소에 대해서만 GIT_SSL_NO_VERIFY를 설정하려면 어떻게 해야 합니까? (0) | 2023.05.24 |
| MongoDB 연결 문자열에 대한 내 dbname은 어디서 찾을 수 있습니까? (0) | 2023.05.24 |