#navi(../)
* VBScriptでフルパスでからファイル名のみ取り出す方法 [#t20412aa]

VBScriptでフルパスでからファイル名のみ取り出す方法を以下に記します。~
本記事では、FileSystemObjectのGetBaseName, GetExtensionNameメソッドを使用して実現しています。~
以下にVBScriptのサンプルコードと実行結果について記します。

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* ファイル名のみ取り出すVBScriptサンプルコード [#oa6a01aa]
#ref(basename.vbs)
  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行目は、拡張子の有無により拡張子を追加する・しないの処理を行っています。

** サンプルコード実行結果 [#r28e56cb]
配列に指定した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

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS