- Easiest way to time a command line tool
- 7 Answers 7
- Sync Time in Windows with NTP Server using Command Line Interface
- Команда W32TM – управление службой времени в Windows
- Параметры командной строки для установки (удаления) службы времени:
- Параметры командной строки для мониторинга службы времени:
- Параметры командной строки для временных преобразований:
- Параметры для выполнения принудительной синхронизации даты и времени с внешним источником:
- Примеры использования команды w32tm
Easiest way to time a command line tool
What is the easiest/quickest way to time a command line tool?
It doesn’t have to be super accurate (+/- seconds is okay) since I expect this to take minutes or even 1 hour+. And writing a batch file is fine too. Also, it doesn’t need to do calculations on time, just display the start time and end time.
7 Answers 7
I am usually using
when I have nothing else at hand. This causes output like the following:
Not pretty and can be made prettier by piping to findstr:
If you have delayed expansion enabled by default (or started cmd with /v:on as argument) you can also just use echo !time! without having to resort to ugly hacks with input redirection.
If you want to use a batch file, you can do it like this:
I have added redirection to nul for both stdout and stderr here, because otherwise it might be difficult to find the start and end lines. You may remove this if this is of no concern to you.
But nowadays I mostly use TimeThis – which by now was removed, sadly.
PowerShell offers a way as well:
but you need to be careful with things that rely on the working directory or redirection. For those to work correctly you might need a little trickery:
This can be run the same way as timethis , be sure to escape double quotes with \» if they are needed in the command line (same as timethis as well). The output produced is similar. Redirections won’t work, though.
Sync Time in Windows with NTP Server using Command Line Interface
Every desktop computer keeps the correct time even when it is turned off by using a simple 3V Lithium battery cell (CR2032). But this is not a rechargeable battery cell, so it stops working after a year or so. You can easily replace this cell, but after replacing the cell, you have to update the time using the NTP servers so that your Windows PC keeps the accurate time. You can update the time using Windows graphical user interface and also through a command line interface (CLI). The CLI method works even when the time service is not properly configured in Windows.
Here is how you can sync time with NTP servers in Windows using the command line interface:
- Open an elevated command prompt. In Windows 8 and later versions, you can press the hotkey Win+X and choose Command Prompt (Admin) from the menu that shoes up. For earlier versions of Windows, you can search our side about opening elevated command prompt in Windows.
- In the elevated command prompt window, type the following commands. At the end of each line, press Enter to issue that command:
You can also download update-time-windows.zip, extract the contents to Windows desktop, right-click on update-time-windows.cmd and choose Run as administrator. This will automatically run a batch file containing all the necessary commands for syncing the time.
Conclusion: Using command line interface or a batch file to sync the Windows PC time with a remote NTP server can be useful when you have to update it frequently. The reasons for frequent syncing could be a failing battery or dual boot operating systems having different time zones set.
Команда W32TM – управление службой времени в Windows
Утилита командной строки w32tm.exe предназначена для удаления или установки службы времени Windows W32Time и управления ею на локальном или удаленном компьютере. Служба времени Windows ( W32Time ) предназначена для синхронизации даты и времени на компьютерах в локальной или глобальной сети. Если служба времени не установлена или отключена, синхронизация времени невозможна.
Служба W32Time обеспечивает функционирование как клиентской, так и серверной части программного обеспечения системы и один и тот же компьютер может быть одновременно и клиентом и сервером NTP (NTP — Network Time Protocol). Протокол NTP использует порт 123/UDP, что нужно учитывать при настройке брандмауэра системы.
Алгоритм функционирования службы времени немного отличается в зависимости от того, является ли компьютер членом домена, или нет. Компьютеры, не входящие в домен используют синхронизацию часов с внешним источником, а входящие – с внутренним NTP-сервером, которым является контроллер домена с ролью PDC-эмулятора (эмулятора первичного контроллера домена). При этом, сам сервер NTP синхронизируется с внешним источником времени. Схема с контроллером домена реализуется при развертывании домена Active Directory и не требует какого-либо ручного вмешательства, более того, такое вмешательство чревато непредвиденными проблемами с функционированием всей инфраструктуры. Для компьютеров же, не входящих в домен, некоторые изменения настроек очень даже не помешают. В частности, во всех актуальных версиях Windows (Windows 7 и старше), предусмотрено выполнение планировщиком заданий стандартной задачи синхронизации времени с внешним источником SynchronizeTime , которая настроена далеко не самым оптимальным образом. Кроме того, некоторые параметры самой службы времени, установленные по умолчанию, не обеспечивают надежную автоматическую синхронизацию часов системы с внешним сервером в Интернет.
Параметры командной строки для установки (удаления) службы времени:
w32tm [/? | /register | /unregister ]
? — вывод справочной информации по использованию команды.
register — установка службы времени Windows и добавление ее стандартной конфигурации в реестр.
unregister — удаление службы времени Windows и всех параметров конфигурации из реестра.
Параметры службы времени хранятся в ключе реестра
Соответственно, параметры службы времени можно менять не только с помощью команды w32tm , но и правкой реестра. В этом случае, применение измененных параметров обеспечивается командой обновления конфигурации
w32tm /config /update
или перезапуском службы W32Time.
Параметры командной строки для мониторинга службы времени:
w32tm /monitor [/domain: ] [/computers: [, [, . ]]] [/threads: ] [/ipprotocol: ] [/nowarn]
domain — указывает наблюдаемый домен. Если имя домена не задано, или не заданы ни домен, ни компьютеры, используется текущее имя домена по умолчанию. Этот параметр может использоваться несколько раз.
computers — наблюдение за перечисленными в списке компьютерами. Имена компьютеров разделяются запятыми, без пробелов. Если имя имеет префикс ‘*’, оно считается именем эмулятора первичного контроллера домена в Active Directory (AD PDC). Этот параметр может использоваться несколько раз.
threads — количество одновременно наблюдаемых компьютеров. Стандартное значение по умолчанию — 3. Допустимый диапазон — от 1 до 50.
ipprotocol — версия IP-протокола (4 или 6), которая будет использоваться для наблюдения. По умолчанию будет использоваться протокол IP любой доступной версии.
nowarn — не отображать сообщения с предупреждениями.
Параметры командной строки для временных преобразований:
w32tm /ntte время_NT
— Преобразует системное время NT в интервалах (10^-7) с начиная с 00 часов 1 января 1601 г. в понятный формат.
w32tm /ntpte время NTP — Преобразует время NTP в интервалах (2^-32) с начиная с 00 часов 1 января 1900 г. в понятный формат.
Параметры для выполнения принудительной синхронизации даты и времени с внешним источником:
w32tm /resync [/computer: ] [/nowait] [/rediscover] [/soft]
Дает компьютеру команду как можно быстрее выполнить повторную синхронизацию своих часов с удалением всей накопившейся статистики ошибок.
computer:компьютер — компьютер, который должен выполнить повторную синхронизацию. Если параметр не указан, выполняется повторная синхронизация локального компьютера.
nowait — не ожидать завершения повторной синхронизации, выполнять возврат немедленно. В противном случае ожидать завершения повторной синхронизации перед возвратом.
rediscover — повторно определить конфигурацию сети и повторно обнаружить сетевые источники, а затем повторно синхронизировать.
soft — повторно синхронизировать, используя существующую статистику ошибок. Данный параметр в современных ОС не используется и предоставлен для обеспечения совместимости.
В справочной информации отсутствует описание параметра /force , который предназначен для выполнения синхронизации времени даже если отклонение показаний аппаратных часов и источника превышает установленное отклонение ( по умолчанию – 15 часов).
w32tm /stripchart /computer:компьютер [/period:обновление] [/dataonly] [/samples:число] [/packetinfo] [/ipprotocol: ]
Выводит диаграмму различий между этим и другим компьютером. computer:компьютер — компьютер, с которым выполняется сравнение.
period:обновление — интервал между измерениями (в секундах). Значение по умолчанию — 2 с.
dataonly — отображать только данные, без диаграмм.
samples:число — собрать число показаний, затем остановиться. Если не указано, сбор данных продолжается, пока не будут нажаты клавиши CTRL+C или CTRL+Break.
packetinfo — напечатать ответное сообщение NTP-пакета. ipprotocol — задать версию протокола IP, который нужно использовать. По умолчанию применяется любой доступный протокол.
w32tm /config [/computer:компьютер] [/update] [/manualpeerlist:узлы] /syncfromflags:источник] [/LocalClockDispersion:секунды] [/reliable:(YES|NO)] [/largephaseoffset:миллисекунды]
computer:компьютер — настраивает конфигурацию указанного компьютера. Если параметр не задан, по умолчанию используется локальный компьютер.
update — уведомляет службу времени, что конфигурация изменилась, чтобы изменения вступили в силу.
manualpeerlist:узлы — задает вручную список DNS-имен и (или) IP-адресов, разделенных пробелами. При указании нескольких узлов этот параметр должен быть заключен в кавычки.
syncfromflags:источник — определяет, с какими источниками должен синхронизироваться NTP-клиент. источник должен быть списком из следующих ключевых слов, разделенных запятыми (без учета регистра):
  MANUAL — синхронизация с узлами из заданного вручную списка.
  DOMHIER — синхронизация с контроллером домена Active Directory в доменной иерархии.
  NO — без синхронизации.
  ALL — синхронизация как с узлами, заданными вручную, так и с узлами домена.
LocalClockDispersion:секунды — настраивает точность внутренних часов, с которой служба w32time будет работать, если не сможет получить время из своих настроенных источников.
reliable:(YES|NO) — определяет, является ли этот компьютер надежным источником времени. Этот параметр имеет значение только для контроллеров домена.
  YES — этот компьютер является надежной службой времени.
  NO — этот компьютер не является надежной службой времени.
largephaseoffset:миллисекунды — устанавливает разницу между локальным и сетевым временем, которую служба w32time будет считать максимальной.
w32tm /tz — Отображает текущие параметры часового пояса.
w32tm /dumpreg [/subkey:раздел] [/computer:компьютер] — Отображает значения, связанные с данным разделом реестра.
Раздел по умолчанию: HKLM\System\CurrentControlSet\Services\W32Time (корневой раздел службы времени).
subkey:раздел — отображает значения, связанные с подразделом раздел раздела по умолчанию.
computer:компьютер — запрашивает параметры реестра для компьютера компьютер.
w32tm /query [/computer:компьютер] [/verbose] — Отображает сведения о службе времени Windows на компьютере компьютер .
Если параметр не указан, по умолчанию используется локальный компьютер.
source — отобразить источник времени.
configuration — отобразить конфигурацию во время выполнения и происхождение параметра. В режиме подробного протоколирования отобразить также незаданные или неиспользованные параметры.
peers — отобразить список узлов и их состояние.
status — отобразить состояние службы времени Windows.
verbose — установить режим подробного протоколирования для вывода дополнительных сведений.
w32tm /debug > — Включает или отключает частный журнал службы времени Windows на локальном компьютере.
disable — отключить частный журнал.
enable — включить частный журнал.
file:имя — указать абсолютное имя файла.
size:байт — указать максимальный размер для циклического файла журнала.
entries:значение — список флагов, заданных номером и разделенных запятыми, указывающих тип сведений, которые должны заноситься в журнал. Допустимые номера: 0–300. Кроме одиночных номеров, допустимы диапазоны номеров, например 0–100,103,106. Значение 0–300 используется для занесения в журнал всех сведений.
truncate — усечь файл, если он существует.
Примеры использования команды w32tm
Как правило, служба времени Windows устанавливается с типом запуска Вручную и запускается по необходимости. Если служба времени остановлена, то управление ею с помощью команды w32tm невозможно. Для запуска, останова или проверки состояния службы можно использовать команду sc
sc query w32time — отобразить состояние службы времени Windows
sc \\192.168.0.8 query w32time — отобразить состояние службы времени на компьютере с адресом 192.168.0.8
sc start w32time — запустить службу времени Windows.
sc \\192.168.0.8 start w32time — запустить службу времени Windows на компьютере с адресом 192.168.0.8 .
sc stop w32time — остановить службу времени Windows.
Кроме утилиты sc.exe можно использовать оснастку Службы (services.msc) панели управления или классические команды net stop и net start
net stop w32time
net start w32time
Для управления службой времени Windows требуются права администратора по отношению к локальной или удаленной системе.
w32tm /? — отобразить подсказку по использованию.
w32tm /query /configuration — отобразить конфигурацию службы времени Windows на локальном компьютере.
w32tm /query /configuration /computer:\\WIN10 — отобразить конфигурацию службы времени на компьютере с именем WIN10
Пример отображаемой информации:
EventLogFlags: 2 (Локально)
AnnounceFlags: 10 (Локально)
TimeJumpAuditOffset: 28800 (Локально)
MinPollInterval: 10 (Локально)
MaxPollInterval: 15 (Локально)
MaxNegPhaseCorrection: 54000 (Локально)
MaxPosPhaseCorrection: 54000 (Локально)
MaxAllowedPhaseOffset: 1 (Локально)
FrequencyCorrectRate: 4 (Локально)
PollAdjustFactor: 5 (Локально)
LargePhaseOffset: 50000000 (Локально)
SpikeWatchPeriod: 900 (Локально)
LocalClockDispersion: 10 (Локально)
HoldPeriod: 5 (Локально)
PhaseCorrectRate: 1 (Локально
) UpdateInterval: 360000 (Локально)
FileLogName: C:\User1\w32tmlog.log (Локально)
FileLogEntries: 0-300 (Локально)
FileLogSize: 100000 (Локально)
NtpClient (Локально)
DllName: C:\WINDOWS\SYSTEM32\w32time.DLL (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)
AllowNonstandardModeCombinations: 1 (Локально)
ResolvePeerBackoffMinutes: 15 (Локально)
ResolvePeerBackoffMaxTimes: 7 (Локально)
CompatibilityFlags: 2147483648 (Локально)
EventLogFlags: 1 (Локально)
LargeSampleSkew: 3 (Локально)
SpecialPollInterval: 604800 (Локально
) Type: NTP (Локально)
NtpServer: time.windows.com,0x9 (Локально)
VMICTimeProvider (Локально)
DllName: C:\WINDOWS\System32\vmictimeprovider.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)
NtpServer (Локально)
DllName: C:\WINDOWS\SYSTEM32\w32time.DLL (Локально)
Enabled: 0 (Локально)
InputProvider: 0 (Локально)
В секции Настройка приведены текущие параметры службы времени Windows, в секции TimeProviders — настройки программного обеспечения как клиентской, так и серверной части.
Наиболее важные параметры службы времени:
Для компьютера, не входящего в домен, используется тип синхронизации NTP и NTPServer с именем time.windows.com . При необходимости можно добавить еще несколько NTP-серверов, введя их DNS имена или IP адреса через пробел. В конце каждого имени можно добавлять 16-ричное число, или флаг (например — 0x1) который определяет режим синхронизации с сервером времени.
Возможные значения режима:
0x1 – SpecialInterval, использование задаваемого интервала опроса;
0x2 – режим UseAsFallbackOnly – синхронизация только при необходимости;
0x4 – SymmetricActive, симметричный активный режим;
0x8 – Client, отправка запроса в клиентском режиме.
Возможно использование комбинаций режимов:
NtpServer: time.windows.com,0x9 — клиентский запрос (0x8) с использованием заданного интервала (0x1) для синхронизации часов с сервером time.windows.com
SpecialPollInterval — значение в секундах интервала обновления времени. По умолчанию – 604800 секунд, что соответствует 7 суткам. Имеет смысл изменить этот интервал, например, на 1 час (3600) или хотя бы на 1 сутки (86400).
Очень важное значение имеют параметры MaxNegPhaseCorrection и MaxPosPhaseCorrection задающие максимальное отрицательное и положительное отклонение показаний часов, при котором может выполняться синхронизация. Значение по умолчанию — 54000 (в секундах), т.е. 15часов, что приводит к тому, что синхронизация времени не выполняется при расхождении показаний часов на величину, превышающую 15 часов. При попытке ресинхронизации времени командой w32tm /resynс показания часов не изменятся и будет выведено вообщение:
Синхронизация не выполнена, поскольку запрошенное изменение слишком велико.
Поэтому, для надежной синхронизации часов компьютера с сервером времени в Интернет, независимо от их текущих показаний, желательно увеличить абсолютное значение параметров MaxNegPhaseCorrection и MaxPosPhaseCorrection , или вообще задать им максимальное значение для типа DWORD – 0xffffffff или 4294967295.
После изменения параметров MaxNegPhaseCorrection и MaxPosPhaseCorrection в реестре системы, синхронизация времени будет выполняться независимо от текущих показаний часов компьютера.
w32tm /monitor /computers:ru.pool.ntp.org — отобразить разницу во времени данного компьютера и сервера времени ru.pool.ntp.org .
w32tm /monitor /computers:ru.pool.ntp.org,time.windows.com,time.nist.gov — отобразить разницу во времени данного компьютера и нескольких серверов времени.
w32tm /resync – синхронизировать часы локального компьютера с используемым им сервером времени.
w32tm /resync /force – синхронизировать часы локального компьютера с используемым им сервером времени, игнорируя максимальное и минимальное отклонение показаний аппаратных часов и источника.
w32tm /stripchart /computer:pool.ntp.org /samples:3 /dataonly — сравнить показания часов локального компьютера с показаниями сервера времени pool.ntp.org . Будет выполнено 3 запроса и результаты будут представлены в текстовом виде.
Пример отображаемой информации:
Отслеживание pool.ntp.org [77.232.189.6:123].
Сбор образцов 3.
Текущее время — 14.02.2017 17:04:02.
17:04:02 d:+00.0154105s o:+00.0201873s
17:04:04 d:+00.0154035s o:+00.0257523s
17:04:06 d:+00.0154118s o:+00.0147256s
d: — задержка ответа, интервал времени между отправкой запроса и получением ответа от сервера NTP.
o: — смещение локальных часов относительно показаний сервера NTP (если положительное значение – часы отстают, отрицательное – спешат).
w32tm /stripchart /computer:pool.ntp.org — то же, что и в предыдущем примере, но проверка выполняется непрерывно, до тех пор пока не будет нажата комбинация клавиш CTRL+C или CTRL+Break
w32tm /config /syncfromflags:manual /manualpeerlist:ru.pool.ntp.org /update — изменить конфигурацию службы времени, для использования сервера NTP ru.pool.ntp.org и применить сделанные изменения.
w32tm /query /configuration — отобразить текущую конфигурацию службы времени Windows на локальном компьютере.
w32tm /query /configuration /computer:win10 — отобразить текущую конфигурацию службы времени Windows на компьютере WIN10 .
w32tm /query /source — отобразить сведения об источнике времени на локальном компьютере.
w32tm /query /source /computer:win10 — отобразить сведения об источнике времени на компьютере win10 .
w32tm /unregister — удалить службу времени Windows из системы. Все параметры службы в реестре удаляются. Перед выполнением команды, служба времени должна быть остановлена, в противном случае команда завершится сообщением об ошибке доступа.
w32tm /register – установить службу времени Windows на данном компьютере. При этом все параметры службы в реестре создаются заново. Для изменения параметров заданных по умолчанию, можно использовать импорт из заранее подготовленного reg-файла, например:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32time\Config]
«MaxNegPhaseCorrection»=dword:ffffffff
«MaxPosPhaseCorrection»=dword:ffffffff