【AutoIt】ファイル名に今日の日付を自動で追加するリネーム術

「作業報告書.docx」や「会議のメモ.txt」といったファイル、あとで見たときに「これ、いつのファイルだっけ?」と分からなくなった経験はありませんか?

今回は、AutoItを使って、ファイル名に今日の日付を自動で追加する方法を紹介します。

このスクリプトを使えば、「ファイル名_YYYY-MM-DD.拡張子」の形式に一瞬でリネームでき、ファイルの整理が格段に楽になります。

目次

スクリプトの概要

このスクリプトを実行すると、ファイルを選択するためのダイアログが開きます。そこで日付を追加したいファイルを選ぶだけで、ファイル名の末尾(拡張子の直前)に「_2025-08-08」のような形式で今日の日付が自動的に追加されます。

ファイル名に今日の日付を追加
ファイル名に今日の日付を追加

サンプルコード

#include <MsgBoxConstants.au3>
; ### メイン処理 ###
; ユーザーにファイルを選択してもらうダイアログを表示します。
; |で区切ることで、複数のファイル形式を選択できるようにしています。
Local $sFilePath = FileOpenDialog("日付を追加したいファイルを選択してください", @MyDocumentsDir, "すべてのファイル (*.*)|ドキュメント (*.docx;*.txt)|画像 (*.jpg;*.png)")
; もしユーザーがキャンセルボタンを押したら、スクリプトを終了します。
If @error Then Exit
; 現在の日付を「YYYY-MM-DD」の形式で取得します。
Local $sToday = @YEAR & "-" & @MON & "-" & @MDAY
; パス、ファイル名、拡張子を分割して取得します。
Local $aPathSplit = _PathSplit($sFilePath)
Local $sDirPath = $aPathSplit[0] ; ディレクトリパス (例: C:\Users\Taro\Documents)
Local $sFileName = $aPathSplit[1] ; ファイル名 (例: report)
Local $sFileExt = $aPathSplit[2]  ; 拡張子 (例: .docx)
; 新しいファイル名を生成します。
; 形式: 元のファイル名 + _ + 日付 + 拡張子
Local $sNewFileName = $sFileName & "_" & $sToday & $sFileExt
; 新しいファイルパスを生成します。
Local $sNewFilePath = $sDirPath & $sNewFileName
; ファイルが既に存在するかチェックします。
If FileExists($sNewFilePath) Then
    MsgBox($MB_ICONEXCLAMATION, "警告", "同じ名前のファイルが既に存在します。" & @CRLF & $sNewFilePath)
    Exit
EndIf
; FileMove関数でファイル名を変更します。(リネームは移動と同じ扱いです)
FileMove($sFilePath, $sNewFilePath)
; 処理が完了したことをメッセージで伝えます。
If @error Then
    MsgBox($MB_ICONERROR, "失敗", "ファイル名の変更に失敗しました。")
Else
    MsgBox($MB_OK, "完了", "ファイル名に日付を追加しました。" & @CRLF & "新しいファイル名: " & $sNewFileName)
EndIf
; AutoItに標準で含まれていない関数を自作します。
; この関数は、フルパスを「フォルダーパス」「ファイル名」「拡張子」の3つに分解する便利な関数です。
Func _PathSplit($sFullPath)
    Local $aResult[3]
    $aResult[0] = StringLeft($sFullPath, StringInStr($sFullPath, "\", 0, -1)) ; フォルダーパス
    $aResult[1] = StringTrimLeft($sFullPath, StringLen($aResult[0])) ; ファイル名+拡張子
    $aResult[2] = StringRight($aResult[1], StringLen($aResult[1]) - StringInStr($aResult[1], ".", 0, -1) + 1) ; 拡張子
    $aResult[1] = StringTrimRight($aResult[1], StringLen($aResult[2])) ; ファイル名のみ
    Return $aResult
EndFunc   ;==>_PathSplit

コードの詳しい解説

FileOpenDialog(…)

ユーザーにファイルを選択させるためのダイアログを表示する関数です。

第三引数で、ファイルの種類をフィルタリングできます。ここでは「すべてのファイル」の他に「ドキュメント」「画像」といったフィルタを用意しています。

@YEAR & “-” & @MON & “-” & @MDAY

AutoIt に初めから用意されているマクロを使って、今日の日付を取得しています。

  • @YEAR: 西暦4桁 (例: 2025)
  • @MON: 月2桁 (例: 08)
  • @MDAY: 日2桁 (例: 08)

「&」は文字列を連結する演算子なので、これらをつなぎ合わせて"2025-08-08"という文字列を作成しています。

_PathSplit(…)

このスクリプトの肝となる部分です。

この_PathSplitは、フルパスを**「[0]フォルダーパス」「[1]ファイル名」「[2]拡張子」**の 3つの要素に分解してくれる自作の関数(Func)です。

ファイル名に日付を追加するには、report.docx を一度「report」と「.docx」に分解し、その間に_2025-08-08を挿入する必要があります。この関数はその分解作業を担っています。

$sNewFileName = $sFileName & “_” & $sToday & $sFileExt

ここで新しいファイル名を組み立てています。_PathSplitで分解した各要素を、「&」を使って「元のファイル名」 + 「_」+ 「今日の日付」 + 「拡張子」の順に連結しています。

FileMove($sFilePath, $sNewFilePath)

前回の「連番リネーム」の記事でも登場した関数です。同じフォルダー内でパスを指定することで、ファイルのリネームを実行します。

If FileExists($sNewFilePath) Then …

リネームを実行する前に、変更後の名前のファイルが既に存在しないかを確認する安全装置です。

もし存在していた場合は、「既にファイルがあります」という警告メッセージを表示してスクリプトを終了します。

これにより、誤ってファイルを上書きしてしまうのを防ぎます。

まとめ

このスクリプトをデスクトップに置いておけば、ファイルアイコンをドラッグ&ドロップするだけで日付を追加する、といった応用も可能です。

日々のファイル管理を少し楽にするための一工夫として、ぜひ活用してみてください。

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次