문제

어떻게 인쇄 시간(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%
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top