2014-12-06 2 views
0

카운트 업 타이머는 지금까지, 나는이 다른 이벤트에서 무슨 일이 일어나고 동시에 실행하려면,이배치 - 나는 배치의 카운트 업 타이머를 만들려고

:timer 
set time=0 
:time 
set /a time=%time%+1 
ping localhost -n 2 >nul 
goto time 

문제가 있습니다 같은 배치 파일. 어떻게해야합니까?

+0

[배경에서 타이머를 실행하는 일괄 처리] 가능한 중복. 어떻게?] (http://stackoverflow.com/questions/4340883/batch-that-runs-a-timer-in-the-background-how) – SomethingDark

답변

0

배치 스크립트를 실행하는 데 걸리는 시간을 측정 하시겠습니까? PowerShell을 설치 한 경우 Measure-Command cmdlet을 사용할 수 있습니다. timeit.bat

저장이 :

@echo off 
>~timeit-%~n1.bat echo(%* 
powershell "Measure-Command {Start-Process ~timeit-%~n1.bat -Wait}" 
del ~timeit-%~n1.bat 

그럼 당신은 그냥 timeit systeminfo 뭔가, 말, systeminfo의 실행 시간이하고 싶을 때.


(PowerShell에서 Windows 세션 당 최초의 실행 자체 소수에 여러 성가신 초 걸립니다)가 아닌 파워 쉘 솔루션을 선호하는 경우, 여기에 빠른 배치/JScript의 하이브리드 솔루션 (more info)입니다. 또한 powershell 솔루션이 명령에 대한 새 창을 생성하는 반면 동일한 창에서 명령을 실행합니다. timer.bat으로 저장하십시오 :

@if (@[email protected]) @end /* begin multiline JScript comment 

:: timer.bat command args 
:: measures execution time of a command 
@echo off & setlocal 

if "%~1"=="" (
    echo Usage: %~nx0 command args 
    goto :EOF 
) 
cscript /nologo /e:JScript "%~f0" %* 
goto :EOF 

:: end batch portion/begin JScript */ 
var osh = new ActiveXObject('wscript.shell'), cmd = [], b4 = new Date(); 

for (var i=0; i<WSH.Arguments.length; i++) { 
    var arg = WSH.Arguments(i); 
    cmd.push(/\s/.test(arg) ? '"' + arg + '"' : arg); 
} 

var exe = osh.Exec('cmd /c ' + cmd.join(' ')); 
while(!exe.StdOut.AtEndOfStream) WSH.Echo(exe.StdOut.ReadLine()) 

var x = (new Date() - b4)/1000, 
    d = Math.floor(x/86400), 
    d = d ? d + ' days ' : '', 
    h = ('0' + (Math.floor(x/3600) % 24)).slice(-2), 
    m = ('0' + (Math.floor(x/60) % 60)).slice(-2), 
    s = Math.floor(x % 60) + x % 1, 
    s = (s < 10) ? '0'+s : s; 

WSH.Echo('\r\nExecution completed in ' + d + h + ':' + m + ':' + s); 
관련 문제