設定ファイルやログファイル、あるいは作業中のドキュメントが最後にいつ保存されたかを知りたい場面はよくあります。
ファイルの更新日時を確認することで、バックアップの要否を判断したり、問題のトラブルシューティングに役立てたりできます。
今回は、AutoIt を使ってファイルの最終更新日時を取得し、分かりやすい形式で表示する基本的なスクリプトを紹介します。
目次
実行するスクリプトの概要
このスクリプトを実行すると、ファイル選択ダイアログが表示されます。
ユーザーが任意のファイルを選択すると、そのファイルの最終更新日時(年月日と時分秒)を取得し、メッセージボックスに表示します。
サンプルコード
#include <MsgBoxConstants.au3>
#include <File.au3>
#include <Date.au3>
; ### メイン処理 ###
; 1. ユーザーにファイルを選択してもらう
Local $sFilePath = FileOpenDialog("最終更新日時を調べたいファイルを選択してください。", @MyDocumentsDir, "すべてのファイル (*.*)")
If @error Then Exit
; 2. ファイルの最終更新日時を「配列」として取得する
Local $aFileTime = FileGetTime($sFilePath, $FT_MODIFIED, $FT_ARRAY)
If @error Then
MsgBox($MB_ICONERROR, "エラー", "ファイルの日時取得に失敗しました。")
Exit
EndIf
; 3. 取得した配列から、年月日と時分秒を整形して文字列にする
Local $sTimeStamp = $aFileTime[0] & "年" & $aFileTime[1] & "月" & $aFileTime[2] & "日 " & $aFileTime[3] & "時" & $aFileTime[4] & "分" & $aFileTime[5] & "秒"
; 4. ファイル名と整形した日時をメッセージボックスで表示する
Local $sFileName = FileGetShortName($sFilePath) ; この関数は8.3形式のファイル名を取得しますが、ここでは単純なファイル名として使用
If StringInStr($sFileName, "\") Then ; サブフォルダー内のファイルの場合、ファイル名だけを再取得
$sFileName = StringMid($sFilePath, StringInStr($sFilePath, "\", 0, -1) + 1)
EndIf
MsgBox($MB_OK, "ファイルの最終更新日時", "ファイル名: " & $sFileName & @CRLF & "最終更新: " & $sTimeStamp)
コードの詳しい解説
ファイルの選択
Local $sFilePath = FileOpenDialog(...)
FileOpenDialog関数を使い、ユーザーにファイルを選択させます。戻り値として、選択されたファイルのフルパスが変数に格納されます。
最終更新日時の取得
Local $aFileTime = FileGetTime($sFilePath, $FT_MODIFIED, $FT_ARRAY)
このスクリプトの心臓部がFileGetTime関数です。
$FT_MODIFIED: 3種類(作成日時、最終アクセス日時、最終更新日時)あるタイムスタンプのうち、最終更新日時を取得するように指定します。$FT_ARRAY: 取得した日時を配列として返すように指定します。このオプションが非常に便利で、以下のように各要素へ簡単にアクセスできます。$aFileTime[0]→ 年 (例: 2025)$aFileTime[1]→ 月 (例: 08)$aFileTime[2]→ 日 (例: 09)$aFileTime[3]→ 時 (例: 01)$aFileTime[4]→ 分 (例: 31)$aFileTime[5]→ 秒 (例: 18)
結果の表示
AutoIt
Local $sTimeStamp = $aFileTime[0] & "年" & ...
MsgBox(...)
FileGetTimeで取得した配列の各要素を、アンパサンド(&)を使って「年」「月」「日」といった日本語と連結し、人間が読みやすい一つの文字列$sTimeStampを作成します。
最後に、ファイル名と整形した日時をメッセージボックスで表示して、処理は完了です。
まとめ
FileGetTime 関数を使うことで、ファイルのタイムスタンプを簡単に扱うことができます。
今回の例では日時を表示するだけでしたが、取得した日時データを使い、「特定のファイルが 24時間以内に更新されているか?」といった条件分岐に応用することも可能です。
ファイルの自動管理や監視スクリプトを作成する上で、非常に重要な基本テクニックです。
コメント