時刻をインターネット同期するコマンド
時刻同期コマンドのご紹介です。これは一例なので自由にアレンジできます。
作成しておくとワンクリックで時刻同期できるので便利です。
@echo off rem ■■W32Timeサービス開始判定あり 時刻同期 bat■■ rem ----- 管理者権限で実行 ----- echo. echo コマンドプロンプトを管理者として実行します echo. for /f "tokens=3 delims=\ " %%A in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%A if not "%LEVEL%"=="High" ( powershell -NoProfile -ExecutionPolicy Unrestricted -Command "Start-Process \"%~f0\" -Verb runas" exit ) rem --Windows Timeサービス W32Time状態判定-- sc query W32Time | findstr STATE | findstr RUNNING > NUL if %ERRORLEVEL% neq 0 ( rem --Windows Timeサービス W32Timeを開始-- echo. echo ============================================== echo Windows Timeサービス W32Timeを開始します。 echo ============================================== echo. net start W32Time timeout /T 3 > NUL ) rem --時刻同期-- echo. echo ==================== echo 時刻同期します。 echo ==================== echo. w32tm /resync echo. echo =========================== echo 最終時刻同期時間を確認 echo =========================== echo. w32tm /query /status echo 終了します。 timeout /T 3 exit
W32Timeサービスが開始していない場合はサービス開始後同期します。すでに開始している場合は時刻同期のみです。
上記を記載したバッチファイルを作りダブルクリックするだけです。
remの行はコメントなので削除可能です。
echoの行は画面に表示する文字列なので削除または変更可能です。
管理者実行が必須なので、通常設定の場合途中で下の[ユーザーアカウント制御]の画面が出ます。
右クリックから[管理者として実行]でも同じです。
右クリックから[管理者として実行]でも同じです。
「はい」をクリックして続行します。
ファイル作成方法:
メモ帳で記載し拡張子を.batまたは.cmdで保存します。ファイル名は任意
(コピー貼り付けが便利です)
通常は、2秒以上の誤差があれば即時同期しますが、誤差が1.9秒以内の場合はslewモードになり即時反映しないようです。
更新
2019/11/25
「W32Timeサービス」を開始した場合、タイミングが合わず同期出来ないことがあるので、25行目で同期するタイミングを3秒遅らせました。
※開始されていた場合は、関係ありません。
メモ帳で保存する場合の文字コードについて、Ver1903からUTF-8が規定値になりBOMが入らなくなりましたが、echoで日本語表示すると文字化けします。
ANSIで保存することをおススメします。
まれな現象として、
再同期コマンドをローカル コンピューターに送信しています
時刻データが利用できなかったため、コンピューターは同期をとり直しませんでした。
上記メッセージが出ることがあります。
原因は多々考えられますが、通常は再度実行することで解消されます。コマンドを複雑にするよりも再実行をおススメします。(※上記メッセージでも同期出来ていることがあります)
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。
これが正常メッセージです。
エラーメッセージ 対策 再実行不要版を公開しました。↓ 再実行が面倒な方へ…
slewモードとstepモード
UTF-8:現在のWindowsメモ帳ではBOMが入ります。