Genellikle kullanıyorum
echo.|time & my_command & echo.|time
elimde başka hiçbir şey olmadığında. Bu, aşağıdaki gibi çıktıya neden olur:
> echo. | time & ping -n 4 localhost> nul ve eko | zaman
Şuanki Zaman: 18: 42: 34,63
Yeni saati girin:
Şuanki Zaman: 18: 42: 37,68
Yeni saati girin:
Güzel değil ve findstr boru ile daha güzel yapılabilir:
echo.|time|findstr current & ping -n 4 localhost > nul & echo.|time|findstr current
Gecikmeli genişletmeyi varsayılan olarak etkinleştirdiyseniz (veya cmd'yi /v:on
bağımsız değişken olarak başlattıysanız ) echo !time!
, giriş yeniden yönlendirmeli çirkin saldırılara başvurmak zorunda kalmadan da kullanabilirsiniz .
Bir toplu iş dosyası kullanmak istiyorsanız, bunu şu şekilde yapabilirsiniz:
@echo Start time: %time%
@%*>nul 2>nul
@echo End time: %time%
Burada hem stdout hem de stderr için nul'e yeniden yönlendirme ekledim, çünkü aksi takdirde başlangıç ve bitiş çizgilerini bulmak zor olabilir. Bu sizi ilgilendirmiyorsa bunu kaldırabilirsiniz.
Ama günümüzde çoğunlukla TimeThis kullanıyorum - ki şu anda üzülerek kaldırıldı.
PowerShell de bir yol sunar:
Measure-Command { my_command }
ancak çalışma dizinine veya yönlendirmeye dayanan şeylere dikkat etmeniz gerekir. Doğru çalışması için biraz hile yapmanız gerekebilir:
@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
Bu , komut satırında gerekiyorsa timethis
çift tırnaklardan kaçmayı unutmayın \"
(aynı şekilde timethis
). Üretilen çıktı benzerdir. Yine de yönlendirmeler işe yaramaz.