У меня есть несколько серверов, размещенных на GoGrid, и каждый раз, когда я перезагружаю один из своих облачных серверов, системные часы неверны. Сервер не является членом домена, поэтому у меня просто настроена ОС на синхронизацию с сервером времени в Интернете. Это происходит только один раз в день, и я не вижу возможности, чтобы это происходило автоматически при перезагрузке. Так что мне осталось написать код, который сделает это за меня.
Я создал командный файл с помощью команды «w32tm / resync» и запланировал его запуск при запуске системы, но он не работает, потому что сетевое соединение недоступно при запуске командного файла. Как запустить синхронизацию времени после полной загрузки ОС и доступности сетевого подключения? Мне нужно, чтобы время было правильным как можно скорее после загрузки компьютера, чтобы временные метки в моей базе данных были правильными.
На самом деле это так. Если вы посмотрите на его ответ, он пытается понять, как написать для этого командный файл.
Связанный: superuser.com/questions/529367/…
Команда w32tm /resync работает, если компьютер присоединен к домену. Вместо этого вы можете использовать команду net time /domain.





запланированная задача, которая запускается при входе в систему?
Обновлено: вы можете оставить скрипт на 30 секунд или около того, чтобы сетевые соединения обновились. Совершенно неправильно прочитал ваш вопрос.
Обычно об этом позаботится служба времени Windows.
http://technet.microsoft.com/en-us/library/cc773013.aspx
У вас работает служба?
Я думаю, что эта страница: Настройка систем для обеспечения высокой точности более полезна о том, как настроить службу.
В Windows 2008 в Планировщике задач есть опция, которая позволит вам дождаться, пока сетевое соединение станет доступным, прежде чем запускать задачу. В диалоговом окне свойств задачи создайте новый триггер «При запуске» и обязательно установите флажок «Включено». Добавьте действие для запуска командного файла. Наконец, добавьте условие для запуска задачи только при наличии сетевого подключения. Затем я попросил его перезапустить команду до 3 раз, если она не удалась. Кажется, это отлично работает.
В более старых версиях Windows используйте следующее содержимое пакетного файла, чтобы повторить команду синхронизации, пока она не будет успешной или пока она не будет повторена слишком много раз.
REM *** Retry for up to 15 minutes (90 retries @ 10 seconds each)
set retryCount=0
:SyncStart
if %retryCount == 90 goto SyncEnd
set /A retryCount=retryCount + 1
REM *** Resync the system clock
w32tm /resync
if errorlevel 1 goto SyncDelay
if errorlevel 0 goto SyncEnd
:SyncDelay
REM *** If unsuccessful, delay 10 seconds, then retry
choice /n /t:y,10>nul
goto SyncStart
:SyncEnd
choice для Win 10 имеет недопустимый синтаксис. Как сказал @scrappylaptop, для Win 7+ используйте choice /N /T 10 /D y>nulНашел это наполовину случайным образом. Новый синтаксис choice.exe для Win 7+ для вставки 10-секундной паузы
choice /N /T 10 /D y>nul
Откройте терминал (как администратор) и выполните эту команду:
Используйте это на своем домашнем компьютере или не присоединитесь к доменуw32tm /resync
Используйте это, если вы присоединились к домену net time /domain
Если вы получили сообщение Служба не запущена. (0x80070426), значит, вам нужно запустить службу времени Windows, подождать минуту и повторить попытку.
Если вы получаете сообщение об ошибке Компьютер не синхронизирован из-за отсутствия данных о времени, вы сможете попробовать еще раз, пока не добьетесь успеха.
Windows 10: синхронизация часов с сервером времени в Интернете в Windows 10
В Windows 10 я обратился к службам и включил автоматическую службу w32time «Время Windows», что для меня решило эту проблему.
Моя проблема возникла из-за того, что у меня двойная загрузка с Linux, и по какой-то причине часы Windows всегда выключены после того, как я загружаюсь в Linux.
двойная загрузка hackintosh и каждый раз после загрузки macOS часы Windows ломаются. это исправило это и для меня
У меня также есть машина с двойной загрузкой с этой проблемой, спасибо! Я знаю, почему это происходит (Linux ожидает, что аппаратные часы будут в формате UTC, Windows ожидает местного времени), но не знал, как автоматизировать синхронизацию часов в Windows при запуске, поэтому ваш ответ был полезен.
FYI Linux / MacOS / * nixes хранят время UTC в аппаратных часах, Windows хранит местное время. Отсюда расхождение.
Я должен был понимать, что мне нужно запустить этот командный файл от имени администратора, чтобы он заработал, но как только я понял это, мне нужно было лишь немного изменить команду выбора, чтобы она работала как шарм.
choice /n /t:10 /D:y
Как и у вышеупомянутого пользователя, у меня тоже есть двойная загрузка между Ubuntu 18.04 и Windows 7, где при загрузке Ubuntu системные часы устанавливаются на UTC, а ОС настраивается на GMT, тогда как Windozz, похоже, устанавливает системные часы на часовой пояс.
Настроить планировщик задач было достаточно просто, моя единственная конкретная проблема заключается в том, что у меня есть ноутбук, подключенный к моему FritzBox на время, поэтому я думаю, мои обновления будут происходить только тогда, когда я буду дома. (Достаточно легко поменять NTP обратно на одну из предустановок, так что меня это не волнует)
Как указано здесь, это может быть связано с наличием системы двойной загрузки с Windows 10 и Linux.
В моем случае служба была настроена на запуск только вручную и поэтому никогда не запускалась, как можно было бы подозревать. Настройка службы для автоматического запуска при запуске в рамках администрирования служб Windows решила проблему для меня.
Я пробую w32sync с опцией автоматического (отложенный старт), и это решено для меня ....
Я использую этот пакетный скрипт для повторной синхронизации времени Windows: Должен быть запущен от имени администратора
w32tm /unregister
w32tm /register
net start w32time
w32tm /resync
Я создал ярлык с пометкой «Запуск от имени администратора»
В моем случае с двойной загрузкой Windows / Linux время не синхронизировалось в Windows, Даже когда «Время Windows» было установлено на «Автоматически». Изменение его на "Автоматический (отложенный старт)" исправило это для меня - Время синхронизируется примерно через 1 минуту после запуска Windows.
autoexec.bat :) (не работает в последних версиях Windows)