programing

Windows 배치: 절전

subpage 2023. 5. 24. 22:09
반응형

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

반응형