Существует ли встроенный способ измерения времени выполнения команды в командной строке Windows?
windows
batch-file
time
cmd
windows-server-2003
Куроки Казе
источник
источник
Ответы:
Если вы используете Windows 2003 (обратите внимание, что Windows Server 2008 и более поздние версии не поддерживаются), вы можете использовать Windows Server 2003 Resource Kit, который содержит timeit.exe, который отображает подробную статистику выполнения. Вот пример времени команды «timeit -?»:
Вы можете получить TimeIt в Windows 2003 Resource Kit. Загрузите это здесь .
источник
В качестве альтернативы, в Windows PowerShell есть встроенная команда, которая похожа на команду времени Bash. Это называется «Мера-Команда». Вы должны убедиться, что PowerShell установлен на компьютере, на котором он запущен.
Пример ввода:
Пример вывода:
источник
.exe
в текущем каталоге, используйте это:Measure-Command { .\your.exe }
. PowerShell, очевидно, не запускает что-либо,pwd
если явно не указано иное.<stdout>
результаты команды, заключенной в фигурные скобки!Если хочешь
Попробуйте скопировать следующий скрипт в новый пакетный файл (например, timecmd.bat ):
Применение
Если вы поместите timecmd.bat в каталог вашего пути, вы можете вызвать его из любого места, например:
Например
Если вы хотите сделать перенаправление вывода, вы можете заключить команду в кавычки так:
Это должно обрабатывать команды, которые выполняются до - после полуночи, но вывод будет неправильным, если ваша команда выполняется в течение 24 часов или более.
источник
timecmd pause
, и это всегда приводит к 1,00 с, 2,00 с, 4,00 с ... даже к 0,00 с! Windows 7.delims=:.
наdelims=:.,
, и тогда он должен работать "по всем направлениям".set start=10:10:10.10
set end=10:11:10.09
И он выведет:command took 0:1:-1.99 (59.99s total)
Вы должны изменить порядок 4 строк, которые выполняют сравнения «lss 0», чтобы перенос переносился правильно от младших к старшим разрядам. Затем вывод становится:command took 0:0:59.99 (59.99s total)
Хе-хе, самое простое решение может быть таким:
Это работает на каждой Windows из коробки.
В случае приложения, использующего вывод консоли, может быть удобно сохранить время запуска во временной переменной:
источник
set startTime=%time% \n YourApp.exe \n echo Start Time: %startTime% \n echo Finish Time: %time%
(Извините, не удалось получить переводы строк в комментарии)set
чтобы сделать математику.;-)
Ой, подождите, неважно, вы уже сделали это ниже.Просто немного расширения ответа от Casey.K об использовании
Measure-Command
с помощью PowerShell :Вы можете вызвать PowerShell из стандартной командной строки, например:
Это будет использовать стандартный вывод, но вы можете предотвратить это, добавив
| Out-Default
вот что из PowerShell:Или из командной строки:
Конечно, вы можете обернуть это в файл сценария
*.ps1
или*.bat
.источник
measureTime.bat "c:\program files\some dir\program.exe"
Однострочник, который я использую в Windows Server 2008 R2:
До тех пор, пока mycommand не требует кавычек (какие винты с обработкой кавычек cmd). Это
/v:on
делается для того, чтобы два разных значения ВРЕМЕНИ оценивались независимо, а не один раз при выполнении команды.источник
^
в cmd (например^"
)cmd /v:on /c echo !TIME! & echo "Quoted mycommand" & cmd /v:on /c echo !TIME!
.echo %time% & *mycommand* & call echo %^time%
. Смотрите также этот ответ .cmd /v:on /c "mycommand & echo begin=%time% endtime=!time!"
Если у вас открыто окно команд и вы вызываете команды вручную, вы можете отображать временную метку в каждом приглашении, например
Это дает вам что-то вроде:
Если у вас есть небольшой пакетный скрипт, который выполняет ваши команды, перед каждой командой должна быть пустая строка, например
Вы можете рассчитать время выполнения каждой команды по информации о времени в приглашении. Лучше всего было бы направить вывод в текстовый файл для дальнейшего анализа:
источник
Так как другие рекомендуют устанавливать такие вещи, как бесплатные программы и PowerShell, вы также можете установить Cygwin , что даст вам доступ ко многим основным командам Unix, таким как time :
Не уверен, сколько накладных расходов добавляет Cygwin.
источник
Не так элегантно, как некоторые функции Unix, но создайте cmd-файл, который выглядит следующим образом:
Это будет отображать время начала и окончания примерно так:
источник
time
есть/t
опция, которая просто отображает текущее системное время, без запроса ввода нового времени. Однако, когда вы делаете это, он отображает только часы и минуты, что может быть недостаточно для некоторых случаев. (См. Ответ Джона Сноу на этот вопрос.)time /T
можно использовать, только если процесс выполняется в течение нескольких минут!time < nul
уродливее, но точнее.echo %time%
который обеспечивает тот же формат и точность, что иtime < nul
, но вы избегаетеEnter the new time:
вывода ...wmic os get LocalDateTime
Я использую бесплатное программное обеспечение под названием «GS Timer».
Просто создайте командный файл так:
Если вам нужно несколько раз, просто перенаправьте вывод timer / s в файл .txt.
Вы можете получить его здесь: Gammadyne's Free DOS Utilities
Разрешение составляет 0,1 секунды.
источник
Я использую Windows XP и почему-то у меня не работает timeit.exe. Я нашел другую альтернативу - PTIME. Это работает очень хорошо.
http://www.pc-tools.net/win32/ptime/
Пример -
источник
Также есть TimeMem (март 2012):
источник
Пока это не длится дольше, чем 24 часа ...
источник
Вот
Постфиксная версия таймера:
Пример использования:
тайм-аут 1 | TimeIt.cmd
Скопируйте и вставьте это в какой-нибудь редактор, например Notepad ++, и сохраните его как TimeIt.cmd :
^ - По версии «Даниэль Спаркс»
источник
Альтернативой измерению времени является просто «Get-Date». У вас нет проблем с пересылкой вывода и так далее.
Вывод:
источник
Это однострочник, который позволяет избежать отложенного расширения , что может нарушить определенные команды:
Вывод что-то вроде:
Для длительных испытаний заменить
$T
на$D, $T
и%TIME%
от%DATE%, %TIME%
включать дату.Чтобы использовать это внутри командного файла , замените
%Z
на%%Z
.Обновить
Вот улучшенный однострочный (без отложенного расширения тоже):
Вывод выглядит примерно так:
Этот подход не включает процесс создания нового
cmd
в результате, и при этом он не включаетprompt
команду (ы).источник
В зависимости от версии Windows, которую вы используете, просто запуск
bash
переведет вас в режим Bash. Это позволит вам использовать несколько команд, которые не доступны непосредственно в PowerShell (например,time
команда). Синхронизировать вашу команду теперь так же просто, как выполнить:Это отлично сработало для меня (Windows 10) после опробования других методов (например
Measure-Command
), которые иногда приводят к нежелательной статистике. Надеюсь, это работает и для вас.источник
Если кто-то пришел сюда в поисках ответа на этот вопрос, есть функция Windows API
GetProcessTimes()
. Не так уж много работы, чтобы написать небольшую C-программу, которая запустит команду, сделает этот вызов и вернет время процесса.источник
Это комментарий / правка Люка Сэмпсона, хороший
timecmd.bat
и ответ наВ некоторых конфигурациях разделители могут отличаться. Следующее изменение должно охватывать как минимум большинство западных стран.
В
%time%
миллисекундах работают в моей системе добавив , что «»(* потому что сайт не позволяет оставлять комментарии и не отслеживает личность, хотя я всегда использую один и тот же гостевой адрес электронной почты, который в сочетании с ipv6 ip и отпечатком браузера браузера должен быть достаточным для однозначной идентификации без пароля)
источник
Вот мой метод, без преобразования и без мс. Полезно определить длительность кодирования (хотя и ограниченную 24 часами):
источник
источник
Следующий скрипт использует только «cmd.exe» и выводит количество миллисекунд с момента создания конвейера до момента завершения процесса, предшествующего скрипту. т.е. введите вашу команду и направьте ее к сценарию. Пример: «timeout 3 | runtime.cmd» должно дать что-то вроде «2990». Если вам нужны как выходные данные времени выполнения, так и выходные данные stdin, перенаправьте stdin перед конвейером - например: «dir / s 1> temp.txt | runtime.cmd» выведет вывод команды «dir» в «temp.txt» и напечатал бы среду выполнения к консоли.
источник
call :calc
. Я сделал это здесь. Код ссылки получить немного лучше. : DОтвет дриблио можно сделать немного короче (хотя и не очень читабельным)
По замечанию Люка Сэмпсона, эта версия восьмерично безопасна, хотя задача должна быть выполнена за 24 часа.
источник
set _time=%time: =0%
устраняет проблему с однозначным числом часов - замените в обоих местах.В каталоге, где находится ваша программа, введите
notepad mytimer.bat
«Да», чтобы создать новый файл.Вставьте приведенный ниже код, заменив его
YourApp.exe
своей программой, затем сохраните.Введите
mytimer.bat
в командной строке и нажмите Enter.источник
Мой код дает вам время выполнения в миллисекундах, до 24 часов, он не зависит от локали и учитывает отрицательные значения, если код выполняется до полуночи. он использует отложенное расширение и должен быть сохранен в файле cmd / bat.
перед вашим кодом:
после вашего кода:
если вы хотите время выполнения в формате ЧЧ: мм: сс.000, добавьте:
переменная
t2
содержит ваше время выполнения, вы можетеecho %t2%
отобразить его.источник
После того, как Perl установит доступное решение по найму, запустите:
STDERR предшествует измеренным секундам
источник
Использование подпрограммы для возврата времени в сотых долях секунды
источник
ТАЙМЕР «Lean and Mean» с региональным форматом, поддержкой 24 часа и смешанного ввода
Адаптация Aacini метода замены , без IF, только один FOR (мое региональное решение)
1: файл timer.bat находится где-то в% PATH% или текущем каталоге
Использование:
таймер и эхо start_cmds & timeout / t 3 и эхо end_cmds и таймер
таймер и таймер "23: 23: 23,00"
таймер "23: 23: 23,00" и таймер
таймера "13.23.23,00" и таймер «03: 03: 03.00«
таймер и таймер »0: 00: 00.00« нет & cmd / v: вкл / с эхо до полуночи =! Timer_end!
Ввод теперь может быть смешанным, для тех маловероятных, но возможных изменений формата времени во время выполнения
2: Функция : таймер в комплекте с пакетным скриптом (пример использования ниже):
:: чтобы проверить это, скопируйте и вставьте выше и ниже разделы кода
CE, DE и CS, DS означают конец двоеточия, конец точки и набор двоеточий, набор точек - используется для поддержки смешанного формата
источник
Следующий скрипт эмулирует время эпохи * nix, но он локальный и региональный. Он должен обрабатывать крайние случаи календаря, включая високосные годы. Если доступен Cygwin , значения эпох можно сравнить, указав параметр Cygwin .
Я нахожусь в EST, и сообщаемая разница составляет 4 часа, что является относительно правильным. Есть несколько интересных решений по удалению TZ и региональных зависимостей, но я не заметил ничего тривиального.
источник
Решение с использованием чистого PHP для cmd и одного env. переменная:
нет необходимости в cygwin или ненадежных утилитах. Полезно, когда PHP доступен локально
Точность и формат вывода можно легко настроить
ту же идею можно перенести для PowerShell
источник