フォルダ内のJPGファイルを作成日時でリネームするVBSscript
作業実績の入力や残業申請で、やっていたことを忘れるのはあるある。
今回は、フリーソフトで10分間隔でスクリーンショットを撮ったけど、どの画像が何時に撮ったかわかりづらいので、更新日時でリネームするVBScriptを作ってみた話。
これまでは、ブラウザのアクセスログとか、Windowsのファイルアクセスログ(InternetExplorerのログとして残る)を手掛かりにしていたけど、ログの残り方に癖があったりして、どの作業に何時間使ったかまでは追いづらいという問題があった。
そこで、定期的にスクリーンショットを撮る方法を思いついた。
フリーソフトのwinshotて定期間隔キャプチャができるのは知っていたので、10分間隔で回してみた。
ちゃんと撮れてるけど、ファイル名が通番で非常に見づらいので、ツールが必要になった次第。
処理の中身は、スクリプトの置いてあるフォルダ内のJPGファイルに対して、更新日時を取得してリネームするだけ。
エラー対策として、winshotの出力はWSで始まるものとして、リネーム後はDesktop+更新日時となるように設定。
作ったのは良いけど、課題があって使えないなぁ。
開始操作がめんどくさい。せめて前回の実行条件は保持してくれないと。。。
そんな感じで以下ソース
Option Explicit
const dateLen = 13 'yyyymmdd_hhmmss の左から何文字取るか 最大15文字
const REGEXP_PATTERN = ".JPG"
'スクリプトのフルパス
dim strFullPath : strFullPath = WScript.ScriptFullName
'スクリプトの親フォルダ
Dim FSO : Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
dim strDir : strDir = FSO.GetFile(strFullPath).ParentFolder
dim objFolder: Set objFolder = FSO.GetFolder(strDir)
'フォルダ内の全ファイルに対して処理を行う
dim f,newName
For Each f In objFolder.Files
If IsMatchPattern(f.Name, REGEXP_PATTERN) Then
newName = "Desktop_" & date2str(f.DateLastModified,dateLen) & ".jpg"
if left(f.name,2) = "WS" then f.name = newName
end if
Next
'------------------------------
' 更新日付を付与したパスを生成
'------------------------------
Function date2str(txt,dateLen)
txt = Replace(txt, "/", "")
txt = Replace(txt, ":", "")
txt = Replace(txt, " ", "_")
txt = left(txt, dateLen)
date2str = left(txt,11) & "時"&mid(txt,12,2)&"分"
end Function
Function IsMatchPattern(ByVal str, pattern)
Dim regExp
Set regExp = CreateObject("VBScript.RegExp")
RegExp.Pattern = pattern
RegExp.IgnoreCase = True '大文字と小文字を区別しない
'解析を実行
If RegExp.Test(str) Then
IsMatchPattern = True
Else
IsMatchPattern = False
End if
Set RegExp = Nothing
End Function