【図解有り】超簡単!!ファイル名・フォルダ名に日付と時間をつけるバッチファイル【Windows】
今回はバッチファイルを作成してみようと思います。
簡単なバッチファイルの例として、保存するファイルに日付と時間をつけるバッチを作成します。
バッチとは
バッチって聞くと企業が夜間に行っている何時間もかかる大きな処理をイメージしますよね。
しかし、本来バッチとは「一束、一群」という意味で複数のものを一つにまとめた状態のことを指しています。処理の大きさは関係ありません。
Windows で作成できるコマンド群をファイル化したものをバッチファイルといいます。
そのため、個人レベルの作業の自動化にも使えます。
企業が行っているバッチ処理とは
企業が行っている夜間のバッチ処理は逐次更新されている取引履歴などを非稼働時間の夜間などに一気に処理しているケースなどです。
処理する量が大きくなればなるほど、バッチ処理のリソース使用率が大きくなり、処理時間も長くなります。
そのため、非稼働時間に行うことで、稼働時間に迷惑をかけることなくバッチ処理をスムーズに行うことが出来ます。
バッチファイルを作ると何がいいのか
バッチファイルを作っておくと、面倒くさい一定の作業がそのファイルを実行するだけで完了するので圧倒的に楽になります。
特に全く同じ操作をする定期作業には、バッチファイルが最適です。
今回はここで作成したバッチを起動するだけで、ファイル名やフォルダ名に日付、時刻をつけることが出来るようになります。
定例作業などで今まで手作業で日時を入力していた方は、結構面倒くさかったかと思います。
今日から解放されますね!おめでとうございます。
シミュレーションの内容
シミュレーション背景
上司から
「これから毎日出勤したら各自のパソコンにある作業フォルダ内のファイルリストを提出してね~。ファイル名に日付と時刻をいれて、いつやったかわかるようにを入れておいてね~」
と指示を受けたとします。
こんな指示が世の企業にあるかは知りませんが、、、
どんなに美人な上司でも、イケメンな上司でも私はこんな指示を恨みます。。。
指示の内容
・ファイルリスト:作業フォルダにあるフォルダ・ファイルの一覧を指定のフォルダ内にあるファイルに入力(表示の都合上、今回はtreeコマンド)
・ファイル名:日付と時間を使用してファイル名を付けて保存(年_月_日__時_分_秒_ファイルリスト.txt)
・保存先:作業ディレクトリ内の「Tree_dateフォルダ」に入れるものとする。
手作業で行った場合
- コマンドプロンプトを起動
- 作業ディレクトリ内に移動(例:cd %HOMEPATH%\desktop\hayana\batch)
- treeコマンドを実行
- 出力結果をコピー
- テキストエディタを起動(ノートパッドなど)
- コピーした出力結果を起動したテキストエディタにペースト
- Tree_dateに「日付_時刻_ファイルリスト.txt」という名前で保存
合計7つの工程が発生します。
これを毎日、、、朝とかいう時間にやるのは本当に面倒くさい。。やだ。。。😩
今回作成するバッチファイルを実行するだけでこの恨むべき7つの作業が全て完了します!!
ファイル名に日時をつけるバッチファイルの作り方
さあ、作っていきましょう。
必要なツール
・メモ帳(ノートパッド)
以上です。
バッチファイルを作成するために予めインストールしておく必要がある特殊なツールはありません。
テキストエディタであればなんでもいいので、サクラエディタなどを使うのも良いと思います。
1,まずはバッチファイル自体を作成
そのままコードを入力しても良いですが、まずは空のままバッチファイルとして保存します。
- メモ帳の上部から「ファイル」>「名前を付けて保存(A)…」を選択
- 保存画面に来たら、ファイル名を設定
①保存先はどこでも構いません。
・今回はバッチの操作先をフルパスで指定します。②「ファイル名.bat」というようにファイル名に「.bat」とつけてください。
・「.bat」こそがバッチファイルの拡張子です。これでないと幾らバッチ用のコードを書いても使えません。③文字コードをANSIにしてください。
・今回は、ファイル名に日本語も使うので、この設定をしないとバッチ実行して作成したファイルのファイル名が文字化けしてしまいます。
- 作成したバッチファイルを確認
手順2で保存した保存先を見てみましょう。
アイコンが画像のようになっていればOKです。
また、ファイルの種類が「Windows バッチ ファイル」となっていればOKです。
2,コード作成
まず、今回のコード全文を見せちゃいます。
@echo off
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set hh=%time:~0,2%
set mn=%time:~3,2%
set ss=%time:~6,2%
tree %HOMEPATH%\Desktop\hayana\batch >> %HOMEPATH%\Desktop\hayana\batch\Tree_date\%yyyy%_%mm%_%dd%__%hh%_%mn%_%ss%_ファイルリスト.txt
コード解説
@echo off
これは、有っても無くてもどちらでも構いません。
echo off無しで実行すると、コード全文が表示されます。
実行ごとにコード画面を消すのが面倒な場合は、@echo off をつけることをお勧めします。
set 〇〇=%date:〇,〇% 、 set 〇〇=%time:〇,〇%
以下は日付や時間を「年」、「月」、「日」、「時」、「分」、「秒」を分解して、それぞれ変数に代入しています。
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set hh=%time:~0,2%
set mn=%time:~3,2%
set ss=%time:~6,2%
ここの解説の為に日付を表示する「dateコマンド」の内容を確認しましょう。
「dateコマンド」の出力結果を変数に代入し、代入した変数の中身を確認することで確認できます。
Aという変数にsetコマンドでdateコマンドの内容を代入して、echoコマンドで変数Aの内容を出力します。
set A=%date%
echo %A%
2021/10/28
このように「〇〇〇〇/〇〇/〇〇」と出力されています。
では、これらの内容を分けていきましょう。
分け方は画像の通りです。
上の図では、日付の出力結果の何文字目から何文字を使うか指定して代入しています。
日付の年の部分では、0番にあるの日付の値の「2」を基準に0番を含めて左から4文字抜き出した日付の値「2021」を「yyyy」という変数に代入しています。
そのため年を代入するコードは
set yyyy=%date:~0,4%
となります。
また、変数名に決まりはありませんので「y」という変数に入れても構いません。
変数名の文字数分しか文字か入らないわけでもありませんが、2021年を21年と略す場合もあるので、「yyyy」とすることで西暦をフルで代入してますよという意思表示をしています。西暦1万年になったら変数名を「yyyyy」にするかもしれませんねw
西暦の末尾2桁しか代入しない場合は、私は「yy」という変数名にして略しているのかを分かりやすくします。
「月」、「日」も年と同じ方法で代入してます。
日付 | 指定する値 |
年 | %date:~0,4% |
月 | %date:~5,2% |
日 | %date:~8,2% |
時刻では「timeコマンド」を使用します。
こちらも日付と同様に出力結果を確認すると
set B=%time%
echo %B%
14:27:50.73
「〇〇:〇〇:〇〇.〇〇」と表示されます。
使用するのは「時」、「分」、「秒」なので以下の図のようになります。
変数hhの場合0番目の値「1」から0番目を含めて2文字分の値「14」をhhに代入させます。
そのコードが以下となります。
set hh=%time:~0,2%
「分」、「秒」も同様のコードで「mn」と「ss」に代入します。
時刻 | 指定する値 |
時 | %time:~0,2% |
分 | %date:~3,2% |
秒 | %date:~6,2% |
小数点以下 | %date:~9,2% |
treeコマンドの出力結果を日時ファイル名に保存
この部分のコードが以下となります。
tree %HOMEPATH%\Desktop\hayana\batch >> %HOMEPATH%\Desktop\hayana\batch\Tree_date\%yyyy%_%mm%_%dd%__%hh%_%mn%_%ss%_ファイルリスト.txt
長いように感じますがやっていることは、3つです。
- 指定したフォルダの配下に対してtreeコマンド実行
- 指定したフォルダ内にファイルを作成し、そのファイルに1の実行結果を追加
- 2で作成したファイルを実行した日時のファイル名を付けてテキストファイル(.txt)として保存
1,「指定したフォルダの配下に対してtreeコマンド実行」の部分の解説。
tree %HOMEPATH%\Desktop\hayana\batch
先にtreeコマンドと引数で場所を指定します。
引数とは%HOMEPATH%から始まる部分のことです。コマンドに対する条件を入れています。。
日本に訳すと「treeコマンドを実行してください。但し、「%HOMEPATH%\Desktop\hayana\batch」フォルダの中で行ってください。
といったような意味になります。
また、パスを指定している%HOMEPATH%ですが、、、
C:\Users\ユーザ名
のパスを略しています。
メリットは略しているというものだけではありません。
%HOMEPATH%を使うと今使っているパソコンだけでなく、ユーザ名の異なる別のパソコンで実行してもエラーが起こらずに同じ結果を出力することが出来ます。
詳しくは”環境変数”で調べてみてください。
脱線しましたが、今回はデスクトップ\hayana(フォルダ)\bacth(フォルダ)を業務フォルダとするので、そのbacthフォルダを指定してtreeコマンドを実行します。
2,「指定したフォルダ内にファイルを作成し、そのファイルに1の実行結果を追加」の部分の解説。
〇〇 >> hoge.txt
これは、左側にある〇〇のコマンドの出力結果を「>>」でつなぐことでhoge.txtというファイルに追記しています。
3,「2で作成したファイルを実行した日時のファイル名を付けてテキストファイル(.txt)として保存」の部分の解説。
%HOMEPATH%\Desktop\hayana\batch\Tree_date\%yyyy%_%mm%_%dd%__%hh%_%mn%_%ss%_ファイルリスト.txt
ここでは、保存するファイルを「どこに」「どのような名前で」保存するのかを指定しています。
2でいうところのhoge.txtの部分をフルパスで指定しています。
%HOMEPATH%\Desktop\hayana\batch\Tree_date\
どこに保存するのかの指定しています。
「\」でフォルダを区切っています。「〇〇フォルダの中の」という意味を持っています。
すなわち「HOMEPATH」の中の「Desktop」の中の「hayanaフォルダ」の中の「batch」の中の「Tree_dateフォルダ」の中に保存するという意味となります。
正直おすすめはできないですが、デスクトップに入れたい場合は「%HOMEPATH%\Desktop」となります。
おすすめはデスクトップに「ファイルリスト」というフォルダを作成して「%HOMEPATH%\Desktop\ファイル」をパス指定するとバッチを実行するたびにファイルリストフォルダの中に作成されるため、デスクトップが汚れずに済みます。
%yyyy%_%mm%_%dd%__%hh%_%mn%_%ss%_ファイルリスト.txt
どのようなファイル名で保存するのかを「setコマンド」で変数に入れた値を使って指定しています。
先ほどのsetコマンドでそれぞれ入った値は以下の通りとなります。
変数名 | 値 |
yyyy | 2021 |
mm | 10 |
dd | 28 |
hh | 14 |
mn | 27 |
ss | 50 |
そのため、ファイル名は「2021_10_28__14_27_50_ファイルリスト.txt」と保存されます。
ピッタリ1日後に再度実行すると「2021_10_29__14_27_50_ファイルリスト.txt」が新たに保存されることになります。
3,バッチファイルを保存
コードを書き上げたら保存しましょう。
一番簡単なのは、「Ctrl」+「S」で保存できます。
もしくはメモ帳の上部にある「ファイル(F)」>「上書き保存(S)」をクリックすると保存できます。
4,作成したバッチファイルを実行
バッチを実行してみましょう。
作成したバッチファイルをダブルクリックすると実行されます。
あれ、、、?画面に変化がない??
大丈夫です。もう完了しています。
バッチファイルで保存先に指定したフォルダを見てみましょう。
ちゃんと先ほど実行した時間でファイル名が出来てますね!
このファイルの中身も見てみましょう。
こちらも指定通りのフォルダのパスでtreeコマンドが実行されています。
なんということでしょう!
7つもある面倒くさい手順がダブルクリックだけで済むように!
これで、めんどくさい指示を退治できました。
まとめ
以下のコードを書き換えれば今回のバッチファイルを作成できます。
@echo off
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set hh=%time:~0,2%
set mn=%time:~3,2%
set ss=%time:~6,2%
tree %HOMEPATH%\[業務フォルダのパス] >> %HOMEPATH%\[出力結果を保存したいフォルダのパス]\%yyyy%_%mm%_%dd%__%hh%_%mn%_%ss%_ファイルリスト.txt
ディスカッション
コメント一覧
まだ、コメントがありません