slo*_*ife 9 windows performance time command-line
为命令行工具计时的最简单/最快捷的方法是什么?
它不必非常准确(+/- 秒也可以),因为我预计这需要几分钟甚至 1 小时以上。编写批处理文件也很好。此外,它不需要进行时间计算,只需显示开始时间和结束时间。
Joe*_*oey 20
我通常使用
echo.|time & my_command & echo.|time
Run Code Online (Sandbox Code Playgroud)
当我手头没有别的东西时。这会导致如下输出:
> echo.|time & ping -n 4 localhost > 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
Run Code Online (Sandbox Code Playgroud)
如果您默认启用延迟扩展(或以 cmd/v:on作为参数启动),您也可以直接使用,echo !time!而不必求助于带有输入重定向的丑陋黑客。
如果要使用批处理文件,可以这样做:
@echo Start time: %time%
@%*>nul 2>nul
@echo End time: %time%
Run Code Online (Sandbox Code Playgroud)
我在这里为 stdout 和 stderr 添加了对 nul 的重定向,否则可能很难找到开始和结束行。如果这与您无关,您可以删除它。
但是现在我主要使用TimeThis - 遗憾的是,它现在已被删除。
PowerShell 也提供了一种方法:
Measure-Command { my_command }
Run Code Online (Sandbox Code Playgroud)
但是你需要小心依赖于工作目录或重定向的东西。对于那些正常工作的人,您可能需要一些技巧:
@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
Run Code Online (Sandbox Code Playgroud)
这可以以与 相同的方式运行timethis,\"如果在命令行中需要它们,请确保使用双引号转义(也一样timethis)。产生的输出是相似的。但是,重定向不起作用。
| 归档时间: |
|
| 查看次数: |
13491 次 |
| 最近记录: |