Как мне синхронизировать часы компьютера при запуске?

У меня есть несколько серверов, размещенных на GoGrid, и каждый раз, когда я перезагружаю один из своих облачных серверов, системные часы неверны. Сервер не является членом домена, поэтому у меня просто настроена ОС на синхронизацию с сервером времени в Интернете. Это происходит только один раз в день, и я не вижу возможности, чтобы это происходило автоматически при перезагрузке. Так что мне осталось написать код, который сделает это за меня.

Я создал командный файл с помощью команды «w32tm / resync» и запланировал его запуск при запуске системы, но он не работает, потому что сетевое соединение недоступно при запуске командного файла. Как запустить синхронизацию времени после полной загрузки ОС и доступности сетевого подключения? Мне нужно, чтобы время было правильным как можно скорее после загрузки компьютера, чтобы временные метки в моей базе данных были правильными.

autoexec.bat :) (не работает в последних версиях Windows)

Tamas Czinege 09.01.2009 00:46

На самом деле это так. Если вы посмотрите на его ответ, он пытается понять, как написать для этого командный файл.

ine 09.01.2009 00:46

Связанный: superuser.com/questions/529367/…

kmonsoor 07.04.2016 10:06

Команда w32tm /resync работает, если компьютер присоединен к домену. Вместо этого вы можете использовать команду net time /domain.

equiman 04.05.2017 04:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
30
4
61 547
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

запланированная задача, которая запускается при входе в систему?

Обновлено: вы можете оставить скрипт на 30 секунд или около того, чтобы сетевые соединения обновились. Совершенно неправильно прочитал ваш вопрос.

Обычно об этом позаботится служба времени Windows.

http://technet.microsoft.com/en-us/library/cc773013.aspx

У вас работает служба?

Я думаю, что эта страница: Настройка систем для обеспечения высокой точности более полезна о том, как настроить службу.

Alexis Wilke 20.08.2020 17:50
Ответ принят как подходящий

В 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
Łukasz Nojek 18.05.2020 21:48

Нашел это наполовину случайным образом. Новый синтаксис 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 ломаются. это исправило это и для меня

Radu Ursache 08.01.2020 17:54

У меня также есть машина с двойной загрузкой с этой проблемой, спасибо! Я знаю, почему это происходит (Linux ожидает, что аппаратные часы будут в формате UTC, Windows ожидает местного времени), но не знал, как автоматизировать синхронизацию часов в Windows при запуске, поэтому ваш ответ был полезен.

polm23 03.07.2020 09:44

FYI Linux / MacOS / * nixes хранят время UTC в аппаратных часах, Windows хранит местное время. Отсюда расхождение.

YSC 15.03.2021 16:59

Я должен был понимать, что мне нужно запустить этот командный файл от имени администратора, чтобы он заработал, но как только я понял это, мне нужно было лишь немного изменить команду выбора, чтобы она работала как шарм.

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

Я создал ярлык с пометкой «Запуск от имени администратора»

Sergio Perez 02.01.2021 02:21

В моем случае с двойной загрузкой Windows / Linux время не синхронизировалось в Windows, Даже когда «Время Windows» было установлено на «Автоматически». Изменение его на "Автоматический (отложенный старт)" исправило это для меня - Время синхронизируется примерно через 1 минуту после запуска Windows.

Другие вопросы по теме