인쇄 시간에 배치 파일(밀리초 단위)
-
03-07-2019 - |
문제
어떻게 인쇄 시간(ms)에서 윈도우는 배치 파일은?
내가 원하는 시간을 측정하는 간에 전달되는 라인에 배치 파일,그러나 윈도우의 시간"/T"인쇄되지 않 밀리초 단위입니다.
해결책
%time%
충분한 시간이 통화 사이에 경과 한 경우 작동해야합니다.
@echo OFF
@echo %time%
ping -n 1 -w 1 127.0.0.1 1>nul
@echo %time%
내 시스템에서 나는 다음과 같은 출력을 얻습니다.
6:46:13.50
6:46:13.60
다른 팁
당신이 같은 일을하고 있다면
for /l %%i in (1,1,500) do @echo %time%
또는
if foo (
echo %time%
do_something
echo %time%
)
그런 다음 단순히 a를 넣을 수 있습니다 setlocal enabledelayedexpansion
배치 파일의 시작 부분에서 사용합니다 !time!
대신에 %time%
라인을 구문 분석하지 않고 실행시 평가됩니다 (괄호로 둘러싸인 완전한 블록 포함).
배치 "프로그램"아래에서 원하는대로해야합니다. 데이터를 밀리 초 대신 센티본으로 출력합니다. 중고 명령의 정밀도는 센티 스미스입니다.
예제 출력은 다음과 같습니다.
STARTTIME: 13:42:52,25
ENDTIME: 13:42:56,51
STARTTIME: 4937225 centiseconds
ENDTIME: 4937651 centiseconds
DURATION: 426 in centiseconds
00:00:04,26
배치 스크립트는 다음과 같습니다.
@echo off
setlocal
rem The format of %TIME% is HH:MM:SS,CS for example 23:59:59,99
set STARTTIME=%TIME%
rem here begins the command you want to measure
dir /s > nul
rem here ends the command you want to measure
set ENDTIME=%TIME%
rem output as time
echo STARTTIME: %STARTTIME%
echo ENDTIME: %ENDTIME%
rem convert STARTTIME and ENDTIME to centiseconds
set /A STARTTIME=(1%STARTTIME:~0,2%-100)*360000 + (1%STARTTIME:~3,2%-100)*6000 + (1%STARTTIME:~6,2%-100)*100 + (1%STARTTIME:~9,2%-100)
set /A ENDTIME=(1%ENDTIME:~0,2%-100)*360000 + (1%ENDTIME:~3,2%-100)*6000 + (1%ENDTIME:~6,2%-100)*100 + (1%ENDTIME:~9,2%-100)
rem calculating the duratyion is easy
set /A DURATION=%ENDTIME%-%STARTTIME%
rem we might have measured the time inbetween days
if %ENDTIME% LSS %STARTTIME% set set /A DURATION=%STARTTIME%-%ENDTIME%
rem now break the centiseconds down to hors, minutes, seconds and the remaining centiseconds
set /A DURATIONH=%DURATION% / 360000
set /A DURATIONM=(%DURATION% - %DURATIONH%*360000) / 6000
set /A DURATIONS=(%DURATION% - %DURATIONH%*360000 - %DURATIONM%*6000) / 100
set /A DURATIONHS=(%DURATION% - %DURATIONH%*360000 - %DURATIONM%*6000 - %DURATIONS%*100)
rem some formatting
if %DURATIONH% LSS 10 set DURATIONH=0%DURATIONH%
if %DURATIONM% LSS 10 set DURATIONM=0%DURATIONM%
if %DURATIONS% LSS 10 set DURATIONS=0%DURATIONS%
if %DURATIONHS% LSS 10 set DURATIONHS=0%DURATIONHS%
rem outputing
echo STARTTIME: %STARTTIME% centiseconds
echo ENDTIME: %ENDTIME% centiseconds
echo DURATION: %DURATION% in centiseconds
echo %DURATIONH%:%DURATIONM%:%DURATIONS%,%DURATIONHS%
endlocal
goto :EOF
아마도 이 도구 도움이 될 수 있습니까? 시간을 반환하지는 않지만 명령이 취하는 시간을 측정하는 것이 좋은 도구입니다.
% time%는 자정 후 H : MM : SS, CS 형식이므로 Centiseconds>로의 전환이 작동하지 않습니다. 오전 6시 46 분에 Patrick Cuff의 게시물을 보는 것은 저만이 아니라는 것 같습니다.
그러나이 줄의 Bevor를 사용하면 그 문제를 쉽게 해결해야합니다.
if " "=="%StartZeit:~0,1%" set StartZeit=0%StartZeit:~-10%
if " "=="%EndZeit:~0,1%" set EndZeit=0%EndZeit:~-10%
좋은 영감에 감사드립니다! 나는 mplayer, ffmpeg, sox 스크립트에서 그것을 사용하여 그것을 재미있게 사용하고 싶습니다.
당신은 무엇을 조심해야 하고 싶기 때문에,그것은 단지에 대해하는 시간을 가져옵니다.
일괄 처리는 내부 변수를 나타내는 날짜와 tme: %날짜%%시간이%.하지만 그들은 그 종속 Windows 습니다.
%날짜%:
- dd.MM 입니다.yyyy
- dd.MM 입니다.yy
- d.M 입니다.yy
- dd/MM/yy
- yyyy-MM-dd
%시%:
- Hh:mm:ss,msec
- HH:mm:ss,msec
지금 얼마나 오래하는 스크립트 작동하며 언제입니까?는 경우,예를 들어,그것은 것이 하루 이상과가 통과하는 자정 그것은 확실히 잘못하기 때문에,차이를 2 타임스탬프간 자정은 부정적인 값입니다!야 할 날짜을 찾아 올바른 거리를 사이에 일,하지만 당신은 어떻게는 경우 형식으로 날짜가 일정하지 않?일 %날짜% 고 %시% 수도가 빠른&가벼운 pc 클리너와 빠른&가벼운 pc 클리너를 계속 사용할 경우 위해 그들을 수학을 목적입니다.
그 이유는 %날짜% 고 %시% 존재만을 보여주는 날짜와 시간을 사용자에서 출력,사용하지 않는 그들을 계산합니다.그래서하려는 경우 올바른 거리를 사이에 약간의 시간 값 또는 생성하는 몇 가지 독특한 가치에 의존하는 날짜와 시간이 다음을 사용하는 다른 무언가가고 정확한 정보 %날짜% 고 %시%.
내가 사용하 wmic 윈도우 내장 유틸리티를 요청을 같은 것들(에 넣어 스크립트 파일):
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE`) do if "%%i" == "LocalDateTime" echo.%%j
나에 입력 cmd.exe 콘솔:
for /F "usebackq tokens=1,2 delims==" %i in (`wmic os get LocalDateTime /VALUE`) do @if "%i" == "LocalDateTime" echo.%j
의 단점은 이것은 성능 저하의 경우에 자주 호출합니다.에서 내 컴퓨터에 대해 12 호출합니다.
계속하려는 경우 사용할 수 있습니다 다음은 다음과 같이 쓸 이(get_datetime.bat):
@echo off
rem Description:
rem Independent to Windows locale date/time request.
rem Drop last error level
cd .
rem drop return value
set "RETURN_VALUE="
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if "%%i" == "LocalDateTime" set "RETURN_VALUE=%%j"
if not "%RETURN_VALUE%" == "" (
set "RETURN_VALUE=%RETURN_VALUE:~0,18%"
exit /b 0
)
exit /b 1
지금,당신이 할 수있는 구문 분석 %배열% somethere 에서 스크립트:
call get_datetime.bat
set "FILE_SUFFIX=%RETURN_VALUE:.=_%"
set "FILE_SUFFIX=%FILE_SUFFIX:~8,2%_%FILE_SUFFIX:~10,2%_%FILE_SUFFIX:~12,6%"
echo.%FILE_SUFFIX%