バッチファイルを使って年月日名のフォルダを自動生成する
Windows でバッチファイルを利用して業務効率化を推進している方は多いと思います。本記事ではバッチファイルを使って年月日名のフォルダを自動生成する方法を紹介します。
バッチファイル
バッチファイルの動作
以下に “yyyymmdd” のように名前に年月日のついたフォルダを作成するバッチファイルを記載します。このバッチファイルを
- 直接ダブルクリックして起動
- 他のバッチファイルから “call %USERPROFILE%\Tools\bat\MakeTodaysFolder.bat“のように呼び出して起動
- タスクスケスケジューラに登録して定期的に自動起動
することで利用します。
ここに %USERPROFILE% は Windows であらかじめ定義されている環境変数で Windows 10 搭載 PCを使っている利用者のデフォルトのフォルダパスを表しています。この環境変数については必要に応じて以下の記事を参照下さい。
@echo off
setlocal
rem /* 今日の日付を取得(yyyymmdd) */
set base=%USERPROFILE%\Tools_Data_Temp
set now=%date:~-10,4%%date:~-5,2%%date:~-2,2%
echo %date% %time% : MakeTodaysFolder.bat is activated from Task Scheduler >> %USERPROFILE%\Tools_Data_Logs\bat\MakeTodaysFolder.log
if not exist %base%\%now% (
mkdir %base%\%now%
)
endlocal
この バッチファイル MakeTodaysFolder.bat を%USERPROFILE%\Tools\bat 配下に保存して、ダブルクリックすると以下のように
%USERPROFILE%\Tools_Data_Temp
というフォルダ配下に “yyyymmdd” いうフォルダが作成されます。
バッチファイルの簡単な説明
行番号 | 説明 |
---|---|
1 | バッチファイルの中で出力されるメッセージを非表示にします。 |
2 | バッチファイルの中で使用する変数がこのバッチファイルの中でのみ有効であると宣言しています。 |
3 | rem はバッチファイルの中のコメント行を表しています。 |
5 | set はバッチファイルの中の変数に値を設定します。ここでは base を “yyyymmdd” いうフォルダを作るベースフォルダの絶対パス名を入れる変数とします。
ここでは %USERPROFILE%\Tools_Data_Temp という絶対パス名が “yyyymmdd” いうフォルダを保存するフォルダです。利用する際にはここを自分の環境に合わせて変更してください。 |
6 | set はバッチファイルの中の変数に値を設定します。ここでは now を “yyyymmdd” いうフォルダ名を入れる変数として定義しています。
ここでは Windows のコマンドプロンプトで利用可能な日付を返す date コマンド の出力結果から yyyy、mm、dd に相当する文字列を以下のように切り出してそれを連結しています。
これらを連結して now に代入することによって now に “yyyymmdd” という形式での数字文字列を得ることができます。ここで %% はバッチファイルの中で変数の値を参照するときのコーディングの仕方です。 理解を深めるための参考としてWindows のコマンドプロンプト内でのコマンド実行結果を以下に示します。 |
8 |
このバッチファイルがタスクスケジューラ等から正しく起動されているかどうかを確認するために、起動された際に 2021/04/18 21:45:05.74 : MakeTodaysFolder.bat is activated from Task Scheduler というメッセージを %USERPROFILE%\Tools_Data_Logs\bat\MakeTodaysFolder.log というファイルに出力します。出力先のフォルダ、ファイル名は環境に合わせて作成、調整します。また、このバッチファイルがうまく動いていることがわかったら、この行の先頭に Rem を追加してコメントアウトすることもできます。 |
10-12 |
定義された base と now を参照するために これらを %%で囲んで、これらを “” を挟んで 結合してフォルダ名の絶対パス名を作成し、このフォルダ名が存在しない場合は mkdir コマンドでフォルダを作成します。10行目でフォルダ名の存在を調べるのは、このバッチファイルが同じ日に複数回数存在したときに、2回目以降でエラーを出力しないような工夫です。 |
14 | バッチファイルの中で使用した変数がこのバッチファイルの中でのみ有効であることを終了宣言しています。 |