Tôi thường sử dụng
echo.|time & my_command & echo.|time
khi tôi không có gì khác trong tay Điều này gây ra đầu ra như sau:
> echo. | time & ping -n 4 localhost> nul & echo. | time
Thời gian hiện tại là: 18: 42: 34,63
Nhập thời gian mới:
Thời gian hiện tại là: 18: 42: 37,68
Nhập thời gian mới:
Không đẹp và có thể được làm đẹp hơn bằng cách đặt đường ống vào findstr:
echo.|time|findstr current & ping -n 4 localhost > nul & echo.|time|findstr current
Nếu bạn đã trì hoãn mở rộng được bật theo mặc định (hoặc bắt đầu cmd với /v:on
tư cách là đối số), bạn cũng có thể chỉ cần sử dụng echo !time!
mà không phải dùng đến các bản hack xấu xí với chuyển hướng đầu vào.
Nếu bạn muốn sử dụng một tệp bó, bạn có thể làm như thế này:
@echo Start time: %time%
@%*>nul 2>nul
@echo End time: %time%
Tôi đã thêm chuyển hướng vào nul cho cả thiết bị xuất chuẩn và thiết bị xuất chuẩn ở đây, vì nếu không, có thể khó tìm được dòng bắt đầu và kết thúc. Bạn có thể loại bỏ điều này nếu điều này không liên quan đến bạn.
Nhưng ngày nay tôi chủ yếu sử dụng Time This - điều mà bây giờ đã bị xóa, thật đáng buồn.
PowerShell cũng cung cấp một cách:
Measure-Command { my_command }
nhưng bạn cần cẩn thận với những thứ dựa vào thư mục làm việc hoặc chuyển hướng. Để những thứ này hoạt động chính xác, bạn có thể cần một mẹo nhỏ:
@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
Điều này có thể được chạy theo cùng một cách timethis
, hãy chắc chắn để thoát dấu ngoặc kép \"
nếu chúng cần thiết trong dòng lệnh (cũng timethis
như vậy). Sản lượng sản xuất là tương tự. Chuyển hướng sẽ không làm việc, mặc dù.