Windows 時刻同期コマンド バッチファイル

スポンサーリンク

時刻をインターネット同期するコマンド

時刻同期コマンドのご紹介です。これは一例なので自由にアレンジできます。

作成しておくとワンクリックで時刻同期できるので便利です。

@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で保存します。ファイル名は任意
(コピー貼り付けが便利です)

 

Windowsメモ帳は文字コードANSIで保存します。
UTF-8:現在のWindowsメモ帳ではBOMが入ります。

 

通常は、2秒以上の誤差があれば即時同期しますが、誤差が1.9秒以内の場合はslewモードになり即時反映しないようです。

更新
2019/11/25

「W32Timeサービス」を開始した場合、タイミングが合わず同期出来ないことがあるので、25行目で同期するタイミングを3秒遅らせました。
※開始されていた場合は、関係ありません。

メモ帳で保存する場合の文字コードについて、Ver1903からUTF-8が規定値になりBOMが入らなくなりましたが、echoで日本語表示すると文字化けします。
ANSIで保存することをおススメします。
  


まれな現象として、

再同期コマンドをローカル コンピューターに送信しています
時刻データが利用できなかったため、コンピューターは同期をとり直しませんでした。

上記メッセージが出ることがあります。
原因は多々考えられますが、通常は再度実行することで解消されます。コマンドを複雑にするよりも再実行をおススメします。(※上記メッセージでも同期出来ていることがあります)

再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。

これが正常メッセージです。

この問題は、以前から多数議論されているようですが、残念ながらWindowsの仕様だと理解しています。
ドメイン参加のパソコンではなく、通常のネット接続パソコンであれば、まれな現象なので再実行で解消されるはずです。
以前は、個人使用で2回実行のコマンドを作成していたこともあります…

自動化も検討しているのですが、エラーコードを出力しないため判定が複雑になります。必要性を感じたら作成します。

2回実行コマンドはこちら↓ 再実行が面倒だったので…

slewモードとstepモード

タイトルとURLをコピーしました