特定のフォルダ配下に今日日付のフォルダを作成する Windows バッチ
日付フォルダを作って作業ログを置いたりする時などに。いちいちフォルダを作って手入力するのも面倒なので自動化。
以下のようなバッチファイル (.bat
ファイル) を作って実行する。
@Rem 「BASE_DIR」で指定したフォルダの配下に今日日付の「YYYYMMDD」フォルダを作成する
Set BASE_DIR=D:\Test\
Set TODAY=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
Mkdir %BASE_DIR%%TODAY%
軽く説明。
Set
コマンドで変数定義ができる。=
の前後にスペースを入れるとそれも文字列として認識されてしまうためスペースを入れない。%DATE%
は環境変数。Echo %DATE%
すると、大抵は2016/01/22
と表示されるが、区切り文字が/
になるかどうかは環境の言語設定によるみたい。- ファイル・フォルダ名に
/
を使えないため、「YYYYMMDD」なフォルダを作るために、変数の一部分から文字列を抽出している。 %変数名:~開始位置,抽出桁数%
と書く。開始位置が 0 の場合は 0 を省略できるので、%DATE:~0,4%
は%DATE:~,4%
と書いても問題ない。- 4桁取って西暦、区切り文字を飛び越えて5文字目から2桁取ると月、さらに区切り文字を飛び越えて8文字目から2桁取って日、と並べている。
2016-01-21
といったハイフン区切りにしたい場合は、%DATE:/=-%
とすれば、変数中の/
を-
に置換する、と書けるが、上述のとおり区切り文字が本当に/
なのかは言語設定に依存し、自分の場合はうまく置換できないこともあったので、やるのであれば%DATE:~0,4%-%DATE:~5,2%**-**%DATE:~8,2%
とするのがオススメ。
Mkdir
でフォルダ作成。変数%BASE_DIR%
は末尾に\
を付けてあるので、%TODAY%
と並べるとD:\Test\20160121
となる。\
マークをココで結合してもいいし、フルパスを変数に入れてから処理しても OK。