本部長は管理ができない

Salesforceに関わっているエンジニアの技術メモ。ときどきそれ以外。

ファイル名の末尾に更新日時を付与するVBScript

エビデンスの画像ファイルに日時を付与したくて作ったもの。
以下のコードを拡張子vbsにして保存。
vbsファイルにリネーム対象のファイル(複数可)をD&Dする。

'----------------------------------------
' ファイル名の末尾に更新日時を付与する
'----------------------------------------

Option Explicit

' 引数確認
if WScript.Arguments.Count < 1 then
    WScript.Quit
end if

' FileSystemObject生成
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim targetPath, changePath

For Each targetPath In WScript.Arguments
    ' パスがファイルで、存在する場合に処理
    if fso.FileExists(targetPath) then
        ' 更新日付を付与したパスを取得
        changePath = createNewFilePath(targetPath)

        ' リネーム
        Call fso.MoveFile(targetPath, changePath)

        ' コピー
        'Call fso.CopyFile(targetPath, changePath)
    end if
Next

'------------------------------
' 更新日付を付与したパスを生成
'------------------------------
Function createNewFilePath(targetPath)
    Dim fo
    Set fo = fso.GetFile(targetPath)

    ' ファイル更新日時取得 + 不要文字削除
    Dim lastModified
    lastModified = fo.DateLastModified
    lastModified = Replace(lastModified, "/", "")
    lastModified = Replace(lastModified, ":", "")
    lastModified = Replace(lastModified, " ", "_")

    ' ファイルパス分割
    Dim targetDir
    Dim targetBaseName
    Dim targetExt
    targetDir = fso.GetParentFolderName(targetPath)
    targetBaseName = fso.GetBaseName(targetPath)
    targetExt = fso.GetExtensionName(targetPath)

    ' 変更後ファイルパス生成し、返却
    createNewFilePath = targetDir & "\" & targetBaseName & "_" & lastModified & "." & targetExt
End Function