명령 줄 도구를 가장 쉽고 빠른 방법은 무엇입니까?
몇 분 또는 1 시간 이상 걸릴 것으로 예상되므로 매우 정확하지 않아도됩니다 (+/- 초는 괜찮습니다). 그리고 배치 파일을 작성하는 것도 좋습니다. 또한 시간에 따라 계산할 필요가 없으며 시작 시간과 종료 시간 만 표시하면됩니다.
명령 줄 도구를 가장 쉽고 빠른 방법은 무엇입니까?
몇 분 또는 1 시간 이상 걸릴 것으로 예상되므로 매우 정확하지 않아도됩니다 (+/- 초는 괜찮습니다). 그리고 배치 파일을 작성하는 것도 좋습니다. 또한 시간에 따라 계산할 필요가 없으며 시작 시간과 종료 시간 만 표시하면됩니다.
답변:
나는 보통
echo.|time & my_command & echo.|time
내가 손에 아무것도 없을 때. 다음과 같은 출력이 발생합니다.
> echo. | 시간 및 핑 -n 4 로컬 호스트> nul & echo. | time 현재 시간 : 18 : 42 : 34,63 새로운 시간을 입력하십시오 : 현재 시간 : 18 : 42 : 37,68 새로운 시간을 입력하십시오 :
findstr에 파이핑하여 예쁘지 않고 더 예쁘게 만들 수 있습니다.
echo.|time|findstr current & ping -n 4 localhost > nul & echo.|time|findstr current
확장이 기본적으로 활성화되어 있거나 /v:on
인수로 cmd를 시작한 경우 echo !time!
입력 리디렉션으로 추악한 해킹에 의존하지 않고도 사용할 수 있습니다 .
배치 파일을 사용하려면 다음과 같이하십시오.
@echo Start time: %time%
@%*>nul 2>nul
@echo End time: %time%
stdout과 stderr 모두에 대해 nul에 리디렉션을 추가했습니다. 그렇지 않으면 시작 및 끝 줄을 찾기가 어려울 수 있습니다. 걱정하지 않으면 제거 할 수 있습니다.
그러나 요즘 저는 대부분 TimeThis를 사용 합니다.
PowerShell은 다음과 같은 방법도 제공합니다.
Measure-Command { my_command }
그러나 작업 디렉토리 또는 리디렉션에 의존하는 것에주의해야합니다. 제대로 작동하려면 약간의 속임수가 필요할 수 있습니다.
@echo off
setlocal enableextensions
rem Prepare current directory and command line so they
rem can be stuck into a single-quoted PowerShell string.
set "Dir=%CD:'=''%"
set "Cmd=%*"
set "Cmd=%Cmd:'=''%"
rem Prepare command to pass to PowerShell
set Command=
set "Command=&{"
set "Command=%Command% Set-Location '%Dir%'"
set "Command=%Command%; [Environment]::CurrentDirectory = '%Dir%'"
set "Command=%Command%; $start = Get-Date"
set "Command=%Command%; Write-Host ' Command line : %Cmd%'"
set "Command=%Command%; Write-Host (' Start time : ' + $start.ToString())"
set "Command=%Command%; Write-Host"
set "Command=%Command%; iex 'cmd /c %Cmd%'"
set "Command=%Command%; $end = Get-Date"
set "Command=%Command%; Write-Host"
set "Command=%Command%; Write-Host ' Command line : %Cmd%'"
set "Command=%Command%; Write-Host (' Start time : ' + $start.ToString())"
set "Command=%Command%; Write-Host (' End time : ' + $end.ToString())"
set "Command=%Command%; Write-Host (' Elapsed time : ' + ($end - $start).ToString())"
set "Command=%Command%; }"
powershell -noprofile -command "%Command%"
endlocal
이것은 같은 방식으로 실행될 수 있습니다 . 명령 행에 필요한 경우 timethis
큰 따옴표를 피하십시오 \"
(동일 함 timethis
). 생산량은 비슷합니다. 그래도 리디렉션은 작동하지 않습니다.
timethis
.
시스템 스케줄러를 사용하여 명령을 실행할 수 있습니다.
제어판-> 예약 된 작업-> 새로 만들기 ....
예약 된 작업을 실행하려는 명령을 가리키면 원하는 작업을 수행해야합니다.
시간 상태 정보를 저장하는 로그 파일을 작성하려는 경우 위 스크립트와 유사한 작업을 고려할 수 있습니다.
날짜와 시간을 반영하기 때문에 "지금"이라는 유틸리티를 사용합니다. 이 기능은 로그 파일에서 추적하고 싶지만 기본적으로 날짜 / 시간을 포함시킬 수있는 명령 줄 스크립트에는 매우 유용합니다. 응답에 신경 쓰지 않고 매우 편리합니다.
스크립트 예는 다음과 같습니다.
echo -------------- >>logfile.txt
now Process Starting>> logfile.txt
<commandhere> <target> >> logfile.txt
now process Ending >> logfile.txt
echo -------------- >> logfile.txt
샘플 출력은 다음과 같습니다
--------------
Mon Mar 06 14:58:48 2009 Process Starting
GNU Super Duper Process PID 12345! Success
Mon Mar 06 21:47:01 2009 Process Ending
--------------
powershell을 사용하는 경우이 작업을 수행 할 수 있습니다 (가독성을 위해 한 줄로 나눠서).
PS C:\> $startTime=Get-Date;ping /n 4 localhost;$endTime=Get-Date;
echo "Finished in $(($endTime-$startTime).ToString())"
또는 쉽게 재사용 할 수 있도록 파일로 저장하십시오.
# usage: .\timer.ps1 program [arguments]
$startTime = Get-Date;
$prog = $args[0];
$progargs = $args[1..($args.length-1)];
&$prog $progargs
$endTime = Get-Date;
echo "Finished in $(($endTime - $startTime).ToString())";
In command prompt:
wmic path win32_operatingsystem get LocalDateTime
wmic path win32_operatingsystem get LocalDateTime
wmic path win32_operatingsystem get LocalDateTime
Output:
C:\Users\Steini> wmic path win32_operatingsystem get LocalDateTime
LocalDateTime
20180113135409.370000+000
C:\Users\Steini>wmic path win32_operatingsystem get LocalDateTime
LocalDateTime
20180113135409.525000+000
C:\Users\Steini>wmic path win32_operatingsystem get LocalDateTime
LocalDateTime
20180113135409.627000+000
클립 보드에서 Ctrl + v를 사용하여 15,5ms 및 10,2ms
Far Manager 1.x 사용자는 타이머 플러그인을 고려할 수 있습니다 .