ファイル名に日時を付与するバッチファイル(コマンドプロンプト)を作成する
課題
「フォルダに何個かファイルが入っている。バッチファイルをひとつクリックするだけで、フォルダ内の全てのファイルのファイル名に、クリックした日時を付与したい」という相談を受けました。
前提条件
フォルダの中に、対象のファイルと、今回作成するバッチファイルを入れます。
念のため、同フォルダ内にバックアップ用フォルダ(以下「bk」フォルダ)を作成し、リネーム処理前に「bk」フォルダに処理前のファイルをコピーする処理を入れておきます。
対応方法
以下のバッチファイルを作成しました。(メモ帳(等のテキストエディタ)で書いて、拡張子「.bat」で保存)
@echo off
rem bkフォルダにバックアップ(コピー)を作成
rem %CD%で、カレントフォルダのパスが取得できる
copy *.txt %CD%\bk
rem 日時を"date2"変数に格納
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set hour=%time:~0,2%
set min=%time:~3,2%
set sec=%time:~6,2%
set ms=%time:~9,2%
set date2=%year%%month%%day%%hour%%min%%sec%%ms%
rem フォルダ内の.txtファイルをリネーム(先頭に日時を付与)
rem 変数%%iは、クォーテーションマークをつけないと、ファイル名にスペースが入っているときにエラーとなる
for %%i in (*.txt) do ren "%%i" %date2%_"%%i"
結果
当バッチファイルをたたくと、以下のようにファイル名の先頭に日時を付与することができます。
参考にしたサイト
知識ゼロからのwindowsバッチファイル超入門 (入門講義【第6章】 ファイル名に日付を加える)
日時の取得方法について、詳しく書かれています。
Qiita (.bat(バッチファイル)のforコマンド解説。)
バッチファイルのループ処理について、詳しく書かれています。