見出し画像

ファイル名に日時を付与するバッチファイル(コマンドプロンプト)を作成する

課題

「フォルダに何個かファイルが入っている。バッチファイルをひとつクリックするだけで、フォルダ内の全てのファイルのファイル名に、クリックした日時を付与したい」という相談を受けました。

前提条件

フォルダの中に、対象のファイルと、今回作成するバッチファイルを入れます。

念のため、同フォルダ内にバックアップ用フォルダ(以下「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"

結果

当バッチファイルをたたくと、以下のようにファイル名の先頭に日時を付与することができます。

実行イメージ

参考にしたサイト

いいなと思ったら応援しよう!