そまちょブログのそまちょ(@somachob)です。
バッチファイルは、手動でする作業を自動化してくれる便利なものです。
ファイル名に日付を反映したいことはよくありますよね。手動で日付を入力するのは面倒くさいし、ミスも起こりがちです。
この記事ではバッチファイルを使って簡単に日付を取得し、ファイル名に反映する方法をご紹介します。効率的に作業を進めるために必見です!
バッチファイルとは
バッチファイルは、複数のコマンドをまとめて実行するためのファイルであり、Windowsのコマンドプロンプトで使うことができます。
バッチファイルを使えば、手動でコマンドを入力する手間を省き、自動化や効率化に役立ちます。
繰り返し同じ手順を何度も実行するときには、バッチファイルを使えば簡単に行えるようになります。
バッチファイルを作成するには、メモ帳などのテキストエディタを開いて、テキストファイルにコマンドを書いて、そのファイルを保存するときに拡張子を「.bat」や「.cmd」にするだけです。
詳しくは、次の記事を参考にしてください。
日付を取得する方法
日付や時間は、date と time の環境変数に格納されています。
次のようなバッチファイルを作成します。
echo コマンドで、date と time を表示させるバッチファイルです。
@echo off
echo %date%
echo %time%
pause
変数に代入された文字列を展開するには、変数名を「%」で囲みます。
詳しくは、次の記事を参考にしてください。
「test.bat」という名前でバッチファイルをデスクトップに作った場合、コマンドプロンプトで次のように入力してバッチファイルを実行することができます。
C:\Users\user\Desktop>test.bat
2023/04/30
10:55:56.87
続行するには何かキーを押してください . . .
コマンドとして date も time もあります。
date コマンド
date コマンドは、日付を表示または設定します。
次は、コマンドプロンプトを起動して、date コマンドを実行した結果です。
C:\Users\user>date
現在の日付: 2023/04/30
新しい日付を入力してください: (年-月-日)
現在の日付が表示され、新しい日付の入力を求められます。
新しい日付を設定しない場合は、Enter キーを押します。
time コマンド
time コマンドは、時刻を表示または設定します。
C:\Users\user>time
現在の時刻: 10:37:44.59
新しい時刻を入力してください:
日付のフォーマットを変更する
取得した日付は、「/」が入っているのでそのままではファイル名に使えません。
そのため、日付のフォーマットを変える必要があります。
日付をフォーマットするために、日付の変数から部分文字列を取得します。
部分文字列を取得するには、次のようにします。
@echo off
echo %date%
echo %date:~0,4%
echo %date:~5,2%
echo %date:~8,2%
pause
次が、実行結果です。
C:\Users\user\Desktop>test.bat
2023/04/30
2023
04
30
続行するには何かキーを押してください . . .
「:~」を使って、変数の部分文字列を取得しています。
%変数名:~開始位置,文字数%
開始位置は、一番左が0になるので注意してください。
@echo off
set a=0123456789
rem 0番目から4文字取得
echo %a:~0,4%
rem 5番目から2文字取得
echo %a:~5,2%
rem 8番目から2文字取得
echo %a:~8,2%
pause
実行結果です。
C:\Users\user\Desktop>test.bat
0123
56
89
続行するには何かキーを押してください . . .
フォーマットする
部分文字列を変数に代入して日付の形式を変更します。
@echo off
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set yyyymmdd=%year%%month%%day%
echo %yyyymmdd%
pause
実行結果です。
C:\Users\user\Desktop>test.bat
20230430
続行するには何かキーを押してください . . .
ファイル名に日付をつける
日付の取得してフォーマットすることができました。
これを使って、今日の日付を反映させたファイルを作成できます。
次は、バッチファイルと同じディレクトリに「今日の日付_testfile.txt」というファイルを作成するバッチファイルです。
filename という変数にファイル名を格納して、「copy nul %filename%」 で空のファイルを作っています。
@echo off
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set yyyymmdd=%year%%month%%day%
set filename=%yyyymmdd%_testfile.txt
copy nul %filename%
pause
テンプレートファイルに日付を追加してコピーする
テンプレートファイルがあり、それをコピーして日付を追加しているときには、次のようなバッチファイルを作っておけば簡単にコピーできます。
デスクトップにある「template.txt」というファイルを「今日の日付_report.txt」というファイル名でコピーしています。
@echo off
set templateFile="C:\Users\user\Desktop\template.txt"
set filename=report.txt
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set yyyymmdd=%year%%month%%day%
set newFilename=%yyyymmdd%_%filename%
copy %templateFile% %newFilename%
まとめ
日付や時刻は、環境変数の date と time に格納されています。
フォーマットするには、date から部分文字列を取得します。
毎日、特定のファイルをコピーしてファイル名に日付名を追加してるようなときには、バッチファイルを使うことで効率化することができます。
バッチファイルを使って業務を効率化しましょう。