バッチファイルを利用して日付(yyyyMMdd)を含むファイルを作成してみました。
バッチファイルを利用した処理を検討する中で「今日の日付を取得してファイルに付与したいな」と思ったのがきっかけです。
この記事で実施する内容
今回利用するバッチファイルは以下の内容を記載します。
・txt-create.bat
@echo off
set str_date=%date:~0,4%%date:~5,2%%date:~8,2%
type null > hogehoge_%str_date%.txt
pause
このバッチファイルを実行することで、「hogehoge_[今日の日付(yyyyMMdd)].txt」という名前のファイルを作成します。
バッチファイルの実行結果
今回はわかりやすいように、作成されるフォルダに実行するバッチファイルを配置します。
バッチファイルを実行後、同じフォルダ内にファイル名に日付を含むテキストファイルが作成されます。
スクリプトの解説
1行目 @echo off
@echo off
1行目の「@echo off」は、コマンド実行結果を表示させないために記載しています。
上記のコードを「@echo off」なしで実行すると以下のようにbatファイルに記載されたコマンドが1行ずつコマンドプロンプト上に表示されます。
スクリプトを作成する過程でのデバッグなどでは大事かもしれませんが、今回は表示させる必要がないので「@echo off」を記載しています。
2行目 set str_date=%date:~0,4%%date:~5,2%%date:~8,2%
set str_date=%date:~0,4%%date:~5,2%%date:~8,2%
2行目では、「%date%」で取得される「yyyy/MM/dd」から「/」を除いて「yyyyMMdd」だけを抜き出す処理をしています。
[yyyy], [MM], [dd] をそれぞれ取り出すために以下のように処理をしています。
- 「%date:~0,4%」:「%date%」の1~4文字目を取得
- 「%date:~5,2%」:「%date%」の6~7文字目を取得
- 「%date:~8,2%」:「%date%」の9~10文字目を取得
3行目 type null > hogehoge_%str_date%.txt
type null > hogehoge_%str_date%.txt
3行目では、 [null] の値(=値は存在しない)を [hogehoge_%str_date%.txt] に書き込んでいます。
書き込むにあたって該当のファイルがない場合は、ファイルを作成する挙動になるので、ファイルの新規作成によく利用される書き方です。
[%str_date%] は2行目で設定した変数なので [yyyyMMdd] が格納されています。
4行目 pause
pause
4行目の「pause」はコマンドプロンプトを止めるために記載しています。
「pause」を入れることで、何かしらキーを押さないと「pause」以降のbatファイル内のコマンドが実行されないようになります。
「pause」を入れなくてもbatファイルは実行できますが、一瞬コマンドプロンプトが立ち上がり、batファイルの処理が終わると勝手に閉じます。
「エラーの確認をしたい」場合や上記のように「コマンド実行結果をキャプチャしたい」場合には、「pause」を入れるとよいと思います。