1. ホーム
  2. windows

[解決済み] Windows バッチ: 日付の書式を変数に変換する

2022-09-21 23:15:36

質問

Windows の .bat ファイルで、現在の日付を YYYY-MM-DD 形式で変数に保存するにはどうしたらよいですか?

Unix シェルのアナログです。

today=`date +%F`
echo $today

どのように解決するのですか?

ロケールに依存しない方法で、現在の日付を取得することができます。

for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x

次に、部分文字列を使って個々の部分を抽出することができます。

set today=%MyDate:~0,4%-%MyDate:~4,2%-%MyDate:~6,2%

個々のパーツを含む変数を取得する、もう一つの方法は、次のようになります。

for /f %%x in ('wmic path win32_localtime get /format:list ^| findstr "="') do set %%x
set today=%Year%-%Month%-%Day%

変数の名前空間を汚染することを犠牲にして、部分文字列をいじくり回すよりずっといい。

ローカルタイムではなくUTCを必要とする場合、コマンドはほぼ同じです。

for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr "="') do set %%x
set today=%Year%-%Month%-%Day%