2013-09-26 4 views
1

집중적으로 조사했지만 배치 파일에서 초 단위로만 대기 도움말을 발견했습니다 (즉, 핑 접근 방식).밀리 세컨드 (!)는 외부를 사용하지 않고 일괄 처리를 기다리고 있습니까?

저는 10-100 밀리 초 정도의 두 명령 사이에서만 기다릴 필요가 있기 때문에 불행히도 저에게는 효과가 없습니다.

대기 시간이 "매우 정확할"필요는 없습니다. 제 경우에는 10ms 또는 12/15ms라면 크게 차이가 나지 않지만 10과 20을 구별 할 수 있어야합니다.

해결책이 있다면 어떨까요? , 나중에 다른 컴퓨터에서 사용할 때 "설치"의 편의를 위해 일괄 처리 만하고 싶기 때문에 "온보드"명령/트릭의 창만 사용합니다.

+0

100ms 미만의 해상도에서 가능하지 않습니다. 시도해보십시오 :'@echo off : loop echo % time % goto loop' (미안, 주석에는 줄 바꿈이 없지만, 설정하는 곳은 알 것 같습니다). 쉼표 뒤에 두 번째 숫자 (10ms)가 연속으로 세지 않음을 알 수 있습니까? (btw : 그 에코 중 약 60 ~ 70은 약 100ms를줍니다. 이것은 6 ~ 7이 약 10ms를 줄 것입니다 ...) – Stephan

답변

3
@echo off 

echo Time before: %time% 
echo Wait %1 centiseconds (or more) 
call :wait %1 
echo Time after: %time% 
goto :EOF 

:wait centiseconds 
for /F "tokens=3,4 delims=:." %%a in ("%time%") do set /A sec=1%%a, msec=1%%b+%1 
if %msec% gtr 199 set /A sec+=1, msec-=100 
set lim=%sec%%msec% 
:waitHere 
for /F "tokens=3,4 delims=:." %%a in ("%time%") do if 1%%a1%%b lss %lim% goto waitHere 
exit /B 

최소 정확한 대기 시간은 전적으로 컴퓨터의 속도에 따라 달라집니다 없습니다. 예를 들어, 제 경우에는 5 초 미만의 대기 시간은 항상 더 많은 시간을 기다립니다. 5 센티 초에서 대기 시간을 사용하면 타이밍이 정확합니다.

EDIT : 약간의 대기 시간으로 더 정확하게하기 위해 프로그램을 약간 수정했는데 이제는 컴퓨터에서 3 센티에서 정확합니다!

최소한의 정확한 대기 시간은 배치 파일의 크기에 따라 달라집니다. 파일이 큰 경우 최소 정확한 시간이 증가합니다 ...

+0

+3 센티 세컨드/-0 센티 세컨드. 예상보다 ... – Stephan

0

% time % 변수를 사용하여 차이를 계산할 수 있습니다.
의사 코드에서는 다음과 같이 보입니다. 로딩이/시간을 시작하는 것은 예측하지 않고 더 이상있는 waittime로 할 수

set startTime=%time% 

:wait 
set now=%time% 
if now-startTime < waitTime goto wait 

는 Btw는 외부 프로그램, 여기에 작동하지 않습니다. 이 할 수

+0

는 답을 실험 할 것입니다. 모두에게 감사드립니다! – jwka

0

, 당신이 원하는 : 예를 들어

@echo off 
echo %time% 
for /L %%i in (1,1,50) do (echo %time%)>nul 
echo %time% 

세 개의 연속 실행 :

C:\>t 
12:15:20,74 
12:15:20,75 

C:\>t 
12:15:21,22 
12:15:21,22 

C:\>t 
12:15:21,69 
12:15:21,71 

보시다시피, 첫 번째 실행은 10ms의 "정보"를 당신에게 제공, 두 번째 실행 준다 당신 "에 대해"0ms, 세 번째에 대해 "약"20ms를 제공합니다. 신뢰할 수있는 아무것도 ... BTW

: 당신이 echo time이 점점 더 악화와 echo %time%을 교체하는 경우는 ...

+0

감사합니다. 좋은 정보 .. 밖으로 시도 할 것입니다! – jwka

+0

(1,1,300)은 상황을 좀 더 안정적으로 만듭니다. 50 ... 80 ms – Stephan

관련 문제