忍者ブログ

フォルダ内のJPGファイルを作成日時でリネームするVBSscript

2023年10月13日
金曜日なにやってたっけ?


作業実績の入力や残業申請で、やっていたことを忘れるのはあるある。

今回は、フリーソフトで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




PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字