【Windows業務効率化】バッチファイルを使って年月日名のフォルダを自動生成する

【Windows業務効率化】バッチファイルを使って年月日名のフォルダを自動生成する

バッチファイルを使って年月日名のフォルダを自動生成する

Windows でバッチファイルを利用して業務効率化を推進している方は多いと思います。本記事ではバッチファイルを使って年月日名のフォルダを自動生成する方法を紹介します。

バッチファイル

バッチファイルの動作

以下に “yyyymmdd” のように名前に年月日のついたフォルダを作成するバッチファイルを記載します。このバッチファイルを

  • 直接ダブルクリックして起動
  • 他のバッチファイルから “call %USERPROFILE%\Tools\bat\MakeTodaysFolder.bat“のように呼び出して起動
  • タスクスケスケジューラに登録して定期的に自動起動

することで利用します。

ここに %USERPROFILE% は Windows であらかじめ定義されている環境変数で Windows 10 搭載 PCを使っている利用者のデフォルトのフォルダパスを表しています。この環境変数については必要に応じて以下の記事を参照下さい。

【Windows業務効率化】バッチファイルの基本テクニックを知ろう

 


@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” いうフォルダが作成されます。

 

【Windows業務効率化】バッチファイルを使って年月日名のフォルダを自動生成する

 

 

バッチファイルの簡単な説明

行番号 説明
1 バッチファイルの中で出力されるメッセージを非表示にします。
バッチファイルの中で使用する変数がこのバッチファイルの中でのみ有効であると宣言しています。
3 rem はバッチファイルの中のコメント行を表しています。
5 set はバッチファイルの中の変数に値を設定します。ここでは base を “yyyymmdd” いうフォルダを作るベースフォルダの絶対パス名を入れる変数とします。

ここでは

  %USERPROFILE%\Tools_Data_Temp

という絶対パス名が “yyyymmdd” いうフォルダを保存するフォルダです。利用する際にはここを自分の環境に合わせて変更してください。

6 set はバッチファイルの中の変数に値を設定します。ここでは now を “yyyymmdd” いうフォルダ名を入れる変数として定義しています。

ここでは Windows のコマンドプロンプトで利用可能な日付を返す date コマンド の出力結果から yyyy、mm、dd に相当する文字列を以下のように切り出してそれを連結しています。

  • %date:~-10,4% : date コマンドの出力結果の後ろから10文字めから4文字を取り出しています。
  • %date:~-5,2% : date コマンドの出力結果の後ろから5文字めから2文字を取り出しています。
  • %date:~-2,2%: date コマンドの出力結果の後ろから5文字めから2文字を取り出しています。

これらを連結して now に代入することによって now に “yyyymmdd” という形式での数字文字列を得ることができます。ここで %% はバッチファイルの中で変数の値を参照するときのコーディングの仕方です。

理解を深めるための参考としてWindows のコマンドプロンプト内でのコマンド実行結果を以下に示します。

【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

定義された basenow を参照するために これらを %%で囲んで、これらを “” を挟んで 結合してフォルダ名の絶対パス名を作成し、このフォルダ名が存在しない場合は

mkdir コマンドでフォルダを作成します。10行目でフォルダ名の存在を調べるのは、このバッチファイルが同じ日に複数回数存在したときに、2回目以降でエラーを出力しないような工夫です。

14 バッチファイルの中で使用した変数がこのバッチファイルの中でのみ有効であることを終了宣言しています。

 

【特集】自動化ツールをバッチファイルで統合し 作業をワンクリックで終わらせよう