【備忘録】[batch] dateの値をファイル名に利用


dateコマンドについて

dateコマンドを利用してフォルダ名/ファイル名を作成するbatchを作成したことは誰しもあると思います。ぐぐればすぐ出てきますしね。
簡単に備忘録としてまとめてみます。

echo date

*********実行結果*********
2019/02/26

dateコマンドは当日の日付けをyyyy/mm/ddで返すコマンド。
ファイル名やディレクトリ名にするには、/を除く必要がある。
2通りの簡単な方法があったため、メモ。

1. %date:/=%

おそらくこれが一番シンプルで簡単な例

echo.bat
set yyyymmdd=%date:/=%
echo %yyyymmdd%

*********実行結果*********
20190226

「/=」で「/」を文字なしに変換している。
例えば、set yyyymmdd=%date:/=#%とすると、
実行結果は2019#02#26となる。

2. %date:~0,4%%date:~5,2%%date:~8,2%

1.と比較して多少ややこしいが、これはこれで応用が利きそう。

echo.bat
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
echo %yyyymmdd%

*********実行結果*********
20190226

「%変数:~x,y% 」変数のx文字目からy文字分を抽出。
x文字目は含まれないことがポイントかも。

実行例

よくあるテンプレートだが、一応。
日付フォルダの有無をチェックし、ない場合は作成するバッチ。

mkdir.bat
@echo off

rem - 日付フォルダの有無をチェックし、ない場合作成する

set yyyymmdd=%date:/=%
set base_path=C:\Users\####\Desktop

if not exist %base_path%\%yyyymmdd% (
    mkdir %base_path%\%yyyymmdd%
)