MENU

【コピペOK】ドラッグ&ドロップでファイル名に作成日・更新日を付加する方法

目次

作成日時・更新日時の落とし穴

日頃の業務で、エクスプローラ等を使ってファイルを「更新日時」や「作成日時」で並び替える機会は少なくないと思います。

しかし、この「更新日時」や「作成日時」は、ファイルの更新やバックアップなどでファイルをコピペした際に、日付が更新されてしまうことがあります。

更新日時はファイル内容に加筆などの変更があった際に更新されてしまいます。

これでは、元々の日時で並び替えをしようとすると、思い通りの順番にならないことがあります。

そこで、元々の日付をファイル名の先頭に付加することで並び順を維持することができます。

これによって、たとえ日付が更新されても、名前順で並び替えたときに元々の日付順で並び変わります。

バッチファイルでまとめてリネーム

上記の方法で並び順は解決できましたが、ファイル数が多いと1ファイルずつリネームするのは、とてつもなく面倒です。

そこで今回はWindowsユーザーなら誰でも使えるバッチファイルを用いて、ドラッグ&ドロップだけでまとめてリネームしたいと思います。

それではバッチファイルの作成工程を説明します。

  • Windowsのメモ帳を開く
  • 以下のコマンドをすべてコピーする
  • メモ帳にペーストする
  • メモ帳を保存する際に拡張子は「.bat」に、
    文字コードは「ANSI」を選択して保存する(ファイル名は何でも良い)

↓コピペするコマンド

@echo off
setlocal enabledelayedexpansion

rem ドラッグ&ドロップしたファイルを1つずつ処理
for %%i in (%*) do (
    rem ファイルの作成(TC)、更新(TW)、最終アクセス(TA)日を取得
    for /f %%a in ('dir /TC ^| findstr "%%~nxi"') do (
        set datetime=%%a
    )

    rem 日時を年月日に分割
    set y=!datetime:~0,4!
    set m=!datetime:~5,2!
    set d=!datetime:~8,2!

    rem ファイルに付加する日付を作成(例:20240101_)
    set setdate=!y!!m!!d!_

    rem ファイルの先頭に日付を付加してリネーム
    ren "%%~nxi" "!setdate!%%~nxi"
    echo 新しいファイル名 → "!setdate!%%~nxi"
)
endlocal
pause

↓拡張子は「.bat」、文字コードは「ANSI」を選択して保存する

これでバッチファイルが作成できました!

このバッチファイルにリネームしたいファイルをドラッグ&ドロップすると、ファイル名の先頭に日付が付加されていると思います。

バッチファイルを使うことで、大量のファイルも一括でリネームすることができました!

バッチファイルをカスタマイズしたい方向け

↓ファイル名の先頭に付加する日付の参照元を変えたい場合は7行目を変更してください。

[作成日時を参照する場合]
for /f %%a in (‘dir /TC ^| findstr “%%~nxi”‘) do (

[更新日時を参照する場合]
for /f %%a in (‘dir /TW ^| findstr “%%~nxi”‘) do (

[アクセス日時を参照する場合]
for /f %%a in (‘dir /TA ^| findstr “%%~nxi”‘) do (

↓ファイル名の先頭に付加する日付の文字列パターンを変えたい場合は17行目を変更してください。

[20240101_ファイル名]
set setdate=!y!!m!!d!_

[2024-01-01-ファイル名]
set setdate=!y!!m!!d!

[2024年01月01日ファイル名]
set setdate=!y!!m!!d!

目次