Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
Ответить

Синхронизация времени батником при загрузке компьютера.

Ср мар 28, 2018 21:54:58

Началось всё с того, что я купил у китайцев часы-конструктор ... ну и захотелось всегда иметь точное время для проверки. Везде советуют спецпроги или правку реестра с целью уменьшения интервала синхронизации ... или планировщик ... а при нечаянной переустановке винды всё придётся делать заново. Всякие гуры пишут, что по-другому нельзя, но на то они и гуры :)

Сами мы ни разу не админы (ну может только 0,1 раза), но полазив по инету, можно найти какие-то отдельные куски из которых можно соорудить bat-файл. Сей батник можно сразу запихнуть в автозагрузку, но я для таких причиндалов, которые желательно сохранять отдельно от винды, завёл специальную папку. А в автозагрузку запихнул ярлык, в свойствах которого указал, что запускать надобно в свёрнутом виде, чтобы глаза не мозолило.

Автозагрузка в винХР находится тут:
C:\Documents and Settings\имя вашей учетной записи\Главное меню\Программы\Автозагрузка
в вин7 тут:
C:\Users\имя вашей учетной записи\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
в других винах ищите сами :)

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

Результат тут:

Спойлер@ echo off

:: Создаём пустой лог-файл
copy nul путь\logfile.txt

:CHECK
:: Проверка состояния службы
echo Checking Time Synchronization Service ...
sc query w32time | 1>nul findstr /r /c:"STATE.*RUNNING"
if not errorlevel 1 (
:: Попытка синхронизации если служба запущена с выводом сообщения в лог-файл
echo Running ... Synchronizing ...
w32tm /resync > путь\logfile.txt
) else (
:: Ожидание 10 сек перед новой проверкой, если ещё не запущена
echo NOT Running ... Waiting ...
ping -n 10 localhost>nul
GOTO CHECK
)

:: Эталон сообщения об успешном завершении (в кавычках - потому что с пробелами / кодировка CP866)
set good="Љ®¬ ­¤  ўлЇ®«­Ґ­  гбЇҐи­®."

:: Чтение и отображение первой строки сообщения из лог-файла
set /p message=< путь\logfile.txt
echo %message%

:: Чтение второй строки (more +1)из лог-файла и её запись в переменную (плюс кавычки)
for /f "tokens=*" %%i in ('more +1 "путь\logfile.txt"') do (
set result="%%i" & goto :OUT)

:OUT
:: Отображение второй строки, за вычетом кавычек (в конце ещё какой-то символ, но на сравнение не влияет)
echo %result:~1,-2%

:: Сравнение второй строки (с кавычками, иначе if не понимает пробелов) с эталоном и дописывание лог-файла
if %result%==%good% (
COLOR A0
echo OK & echo OK >> путь\logfile.txt
:: Останавливаем службу за дальнейшей ненадобностью (опционально) и дописываем лог-файл
net stop w32time >> путь\logfile.txt
) else (
COLOR C0
echo ERROR !!! & echo ERROR !!! >> путь\logfile.txt
:: оставляем окно открытым для выяснения причин ошибки
pause
)

exit

Работает :)

Читаем, забираем, пользуемся, комментируем, предлагаем варианты.
8)

Re: Синхронизация времени батником при загрузке компьютера.

Чт мар 29, 2018 10:46:31

Уход системного таймера за месяц - порядка нескольких секунд для большинства компьютеров! Врёт таймер ОС, работающий от прерываний 60 герц... По крайней мере, для большинства компьютеров, работающих без перезагрузки, перезагрузка и получение времени из системных часов даёт практически тот же эффект, что и синхронизация с сервером... :dont_know:

Re: Синхронизация времени батником при загрузке компьютера.

Чт мар 29, 2018 19:21:20

Я про домашний комп, который не работает постоянно, а "внешний сервер" - это NTP-сервер, который раздаёт время всем желающим. Но временами возникают проблемы, тогда приходится выбирать другой сервер. Просто так этого не увидишь, а батник подскажет.

Re: Синхронизация времени батником при загрузке компьютера.

Ср авг 08, 2018 22:16:18

в GPEDIT.MSC или похожей консоли есть настройка политики синхронизации времени со всякими опциями, там же и скрипт втулить мона

Re: Синхронизация времени батником при загрузке компьютера.

Чт авг 09, 2018 02:05:17

Ну так то просто сценарий запуска, а там
Полосатый писал(а):либо команда сихронизации может не сработать, либо внешний сервер отвалится, а мы этого не узнаем

Здесь же получим красное сообщение, которое означает, что время не синхронизируется и с этим надо что-то делать.

К тому же, этот gpedit есть не у всех и с ним ещё надо разбираться.
Ответить