【バッチファイル】ファイル名に日付をつける方法(ドラッグ&ドロップ)
私が愛用している方法のご紹介です。
私はファイル名に日付をつけて管理することが多いので、デスクトップ、ダウンロードフォルダなど、各所に置いてます。
バッチファイルにまとめて放り込むだけなので、手軽に日付の付けることができます。
■Windowsバッチファイルとは?
バッチファイルは、Windows環境で複数のコマンドを自動的に実行できるテキストファイルです。単調な作業を繰り返し実行したり、複雑なタスクをワンクリックで実行したりするなど、作業効率を大幅に向上させることができます。
■バッチファイルを準備する方法
バッチファイルは、メモ帳などのテキストエディタで作成できます。
テキストエディタを開き、拡張子を .bat に設定してファイルを作成します。
ファイル内に実行したいコマンドを記述します。
ファイルを保存して、コマンドプロンプトから実行します。
■<ファイル名に日付をつける>バッチファイルの使い方
今回紹介するバッチファイルの使い方を説明します。
== 使用方法 ==
バッチファイルを用意します。(紹介するものをコピペでOK)
日付をつけたいファイルを選択します。(複数OK)
用意したバッチファイルへドラッグ&ドロップする。
これだけで、ファイル名に日付をつけることが出来ます。
■<ファイル名に日付をつける>バッチファイルのコード
①ファイル名の<前>に<本日の日付>をつける。
YYYYMMDD形式でファイル名に本日の日付つけるコードです。
例:$${\fbox{20240212}}$$_ファイル名.txt
:LOOP
rem ファイルがなければ、処理を終了
if "%~nx1" == "" goto END
rem 日付の"/"を削除(空白に変換)
set today=%date:/=%
rem ファイル名を変更
ren "%~nx1" "%today%_%~nx1"
rem shiftは、コマンドライン引数の最初の要素を削除
shift
rem 先頭へ戻る
goto LOOP
:END
YYYY-MM-DD形式のほうがいい!という場合は、『set today=~~』以下のように変更してください。
例:$${\fbox{2024-02-12}}$$_ファイル名.txt
set today=%date:/=-%
上記は %date%(2024/02/12) の『/ を - に置き換える』という処理をしています。
②ファイル名の<前>に<ファイル更新日>をつける
YYYYMMDD形式でファイル名にファイル更新日をつけるコードです。
例:$${\fbox{20240212}}$$_ファイル名.txt
:LOOP
rem ファイルがなければ、処理を終了
if "%~nx1" == "" goto END
rem 更新日時を取得
set "timestamp=%~t1"
rem YYYYMMDD形式に変換
set "timestamp=%timestamp:~0,4%%timestamp:~5,2%%timestamp:~8,2%"
rem ファイル名を変更
ren "%~nx1" "%timestamp%_%~nx1"
rem shiftは、コマンドライン引数の最初の要素を削除
shift
rem 先頭へ戻る
goto LOOP
:END
YYYY-MM-DD形式のほうがいい!という場合は、『set timestamp=~~』以下のように変更してください。
例:$${\fbox{2024-02-12}}$$_ファイル名.txt
set "timestamp=%timestamp:~0,4%-%timestamp:~5,2%-%timestamp:~8,2%"
ファイル更新日時が『2024/02/12 12:23:34』の場合、上記の内容は
%timestamp:~0,4%(2024)、%timestamp:~5,2%(02)、%timestamp:~8,2%(12) の文字を取り出して、文字同士の間に『 - 』を配置してます。
:LOOP
rem ファイルがなければ、処理を終了
if "%~nx1" == "" goto END
rem 更新日時を取得
set "timestamp=%~t1"
rem YYYYMMDD形式に変換
set "timestamp=%timestamp:~0,10%"
set "timestamp=%timestamp:/=%"
rem ファイル名を変更
ren "%~nx1" "%timestamp%_%~nx1"
rem shiftは、コマンドライン引数の最初の要素を削除
shift
rem 先頭へ戻る
goto LOOP
:END
■ファイル名の<後ろ>に日付をつける方法
ファイル名と拡張子の間に日付を入れたい場合はコチラの方法が使えます。
①ファイル名の<最後>に<本日の日付>をつける。
YYYYMMDD形式でファイル名に本日の日付つけるコードです。
例:ファイル名_$${\fbox{20240212}}$$.txt
:LOOP
rem ファイルがなければ、処理を終了
if "%~nx1" == "" goto END
rem 日付の"/"を削除(空白に変換)
set today=%date:/=%
rem ファイル名を変更
ren "%~nx1" "%~n1_%today%%~x1"
rem shiftは、コマンドライン引数の最初の要素を削除
shift
rem 先頭へ戻る
goto LOOP
:END
YYYY-MM-DD形式のほうがいい!という場合は、『set today=~~』以下のように変更してください。
例:ファイル名_$${\fbox{2024-02-12}}$$.txt
set today=%date:/=-%
上記は %date%(2024/02/12) の『/ を - に置き換える』という処理をしています。
②ファイル名の<最後>に<ファイル更新日>をつける
YYYYMMDD形式でファイル名にファイル更新日をつけるコードです。
例:ファイル名_$${\fbox{20240212}}$$.txt
:LOOP
if "%~nx1" == "" goto END
rem 更新日時を取得
set timestamp=%~t1
rem YYYYMMDD形式に変換
set timestamp=%timestamp:~0,4%%timestamp:~5,2%%timestamp:~8,2%
rem ファイル名を変更
ren "%~nx1" "%~n1_%timestamp%%~x1"
rem shiftは、コマンドライン引数の最初の要素を削除
shift
rem 先頭へ戻る
goto LOOP
:END
YYYY-MM-DD形式にしたい場合は、『set timestamp=~~』以下のように変更してください。
例:ファイル名_$${\fbox{2024-02-12}}$$.txt
set "timestamp=%timestamp:~0,4%-%timestamp:~5,2%-%timestamp:~8,2%"
ファイル更新日時が『2024/02/12 12:23:34』の場合、上記の内容は
%timestamp:~0,4%(2024)、%timestamp:~5,2%(02)、%timestamp:~8,2%(12) の文字を取り出して、文字同士の間に『 - 』を配置してます。
■バッチファイルがうまく動かないとき
バッチファイルがうまく動かない場合は、以下の点を確認してください。
コマンドの記述に誤りがないか?
ファイルの拡張子が .bat になっているか?
改行コードがCRLFになっているか?
それでも動かないときは、文字コードセットを変更してみましょう。
ファイル保存時、"ANSI"や"Shift-JIS"で保存して、動作を確認してください。
◆文字コードセット変更方法(メモ帳の場合)
メモ帳を開き、バッチファイルを開く
( [Win + R]キー → "notepad" )メモ帳のメニューから、[ファイル] → [名前を付けて保存]
名前を付けて保存ダイアログのエンコードを『ANSI』に変更して保存する。
■まとめ
日付追加のバッチファイルは、ドラッグ&ドロップで使用する。
バッチファイルはコードをコピペし、拡張子を.batに変更するだけで使える。
うまく動かない場合は文字コードセットを変更する。
$${\utilde{\bf ファイル名に日付をつけること}}$$が多い方は、
①ファイルをクリック
②[F2]押下
③ファイルの先頭にカーソルを合わせる
④今日の日付を確認して入力
ファイルごとに行っていたこの操作が、一瞬で終わるようになります。
バッチファイルを一度準備しておけば、すごく楽になりますので、一度お試しただければと思います。
もしどなたかのためになれば幸いです。
この記事が気に入ったらサポートをしてみませんか?