On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
' スクリプトのフルパスを取得
scriptPath = WScript.ScriptFullName
' スクリプトが存在するディレクトリを取得
scriptFolder = objFSO.GetParentFolderName(scriptPath)
' フォルダ内のすべてのファイルに対して処理
ProcessFilesInFolder scriptFolder
' エラーチェック
If Err.Number <> 0 Then
WScript.Echo "エラーが発生しました: " & Err.Description
End If
On Error GoTo 0
Sub ProcessFilesInFolder(folderPath)
Set objFolder = objFSO.GetFolder(folderPath)
' フォルダ内の各ファイルに対して処理
Dim anyFilesProcessed
anyFilesProcessed = False
For Each objFile In objFolder.Files
' ファイルの更新日時を取得
lastModifiedDate = objFile.DateLastModified
' 更新日時のフォーマットを "yyyymmdd" 形式に変換
formattedLastModifiedDate = Year(lastModifiedDate) & Right("0" & Month(lastModifiedDate), 2) & Right("0" & Day(lastModifiedDate), 2)
' 新しいファイル名を作成
newFileName = UpdateDateInFileName(objFile.Name, formattedLastModifiedDate)
' ファイルをリネーム
If newFileName <> objFile.Name Then
objFile.Name = newFileName
anyFilesProcessed = True
' メッセージボックスに表示
' MsgBox "ファイル名が変更されました: " & objFile.Path
End If
Next
' 対象のファイルがない場合のメッセージ表示
If Not anyFilesProcessed Then
' MsgBox "対象のファイルが見つかりませんでした。"
End If
' サブフォルダも再帰的に処理
For Each objSubFolder In objFolder.SubFolders
ProcessFilesInFolder objSubFolder.Path
Next
End Sub
Function UpdateDateInFileName(fileName, lastModifiedDate)
Dim fileExtension, baseFileName, newFileName
fileExtension = objFSO.GetExtensionName(fileName)
baseFileName = objFSO.GetBaseName(fileName)
' ファイル名から既存の日付を検索
Dim dateStartPosition
dateStartPosition = InStr(baseFileName, "_")
If dateStartPosition > 0 Then
' 既存の日付箇所を上書き
baseFileName = Left(baseFileName, dateStartPosition - 1) & "_" & lastModifiedDate
Else
' 既存の日付がない場合は追加
baseFileName = baseFileName & "_" & lastModifiedDate
End If
' 新しいファイル名を作成
newFileName = baseFileName & "." & fileExtension
UpdateDateInFileName = newFileName
End Function