「YYYYMMDD.html」形式232個の日記ファイルを、日付と更新時刻が一致するようタイムスタンプを変更する作業。手でやってメゲたので、自動化しようとしてみた。
最初に書いたスクリプトがこんなん。
Loop,C:\〜\diary\*.html { RegExMatch("%A_LoopFileName%","(\d8).*",$);ファイル名から年月日取得 FileSetTime ,%$1%210000 , ,M ,0 ,0;タイムスタンプ変更 } msgbox,終了 return
これが色々正規表現をいじってもうまくいかないので、諦めて年月日取得はClipNameに任せることにした。
Loop,C:\〜\diary\*.html { run,c:\apps\ClipName\ClipName.EXE /N "%A_LoopFileLongPath%";対象ファイルをClipNameに投げる WinWaitClose ,ahk_class ClipName 3.053,,,,;ClipName終了まで待機 FileSetTime ,%clipboard%210000 , ,M ,0 ,0;クリップボードから年月日取得してタイムスタンプ更新 } msgbox,終了 return
これがまた見事に失敗する。どうも、clipboard変数がLoopコマンド開始前の値を保持しちゃってるようで、タイムスタンプが全部同じになってしまうありさま。
もうめんどっちいので、ファイル名を拡張子付きでFileSetTimeに突っ込んでやることにした。
Loop,C:\〜\diary\*.html { FileSetTime,%A_LoopFileName% } msgbox,終了 return
時刻以下は00にしかならないけど、そこはどうでもいいので一応成功。こんな短いスクリプトでよかったんかい……。