VBScriptでフルパスでからファイル名のみ取り出す方法を以下に記します。
本記事では、FileSystemObjectのGetBaseName, GetExtensionNameメソッドを使用して実現しています。
以下にVBScriptのサンプルコードと実行結果について記します。
1: Set fso = CreateObject("Scripting.FileSystemObject") 2: 3: filename = Array("c:\a\b\c\sakura.txt", "c:\x\y\z\tubaki") 4: For i = 0 To UBound(filename) 5: WScript.Echo "Target filename = " & filename(i) 6: basename = fso.GetBaseName(filename(i)) 7: WScript.Echo "GetBaseName = " & basename 8: extension = fso.GetExtensionName(filename(i)) 9: WScript.Echo "GetExtensionName = " & extension 10: If Len(extension) = 0 Then 11: WScript.Echo "FileName = " & basename 12: Else 13: WScript.Echo "FileName = " & basename & "." & extension 14: End If 15: Next 16: 17: Set fso = Nothing
上記のサンプルコードは、以下のように動作します。
3行目でプルパス名のファイル名文字列を2つ用意しました。1つ目は拡張子あり。2つ目は拡張子なしになります。
4行目と15行目は3行目で設定した要素数分ループするようにしています。
6行目でファイル名を取得してます。(拡張子を除く)
8行目で拡張子を取得しています。
10行目から14行目は、拡張子の有無により拡張子を追加する・しないの処理を行っています。
配列に指定した2つのフルパスファイル名からファイル名のみ取得しているのが確認できます。
C:\wsh>cscript /nologo basename.vbs Target filename = c:\a\b\c\sakura.txt GetBaseName = sakura GetExtensionName = txt FileName = sakura.txt Target filename = c:\x\y\z\tubaki GetBaseName = tubaki GetExtensionName = FileName = tubaki