VBScript - FileSystemObject でファイルシステムを扱う方法

(2023-10-04 追記)
VBScript 関連はこちらにまとめていきます。
逆引き VBScript

VBScript でフォルダやファイルにアクセスするには、 FileSystemObject オブジェクトを利用する。

ここでは FileSystemObject オブジェクトの使い方をまとめる。


FileSystemObject の機能一覧

$$
\def\arraystretch{1.5}
\begin{array}{|l|l|l|} \hline
\textbf{FileSystemObject でできること} & \textbf{メソッド/プロパティ} & \textbf{戻り値} \\ \hline
\text{指定したパスの完全なパスを取得する。} & \text{GetAbsolutePathName メソッド} & \text{String} \\ \hline
\text{指定したパスのドライブ名を取得する。} & \text{GetDriveName メソッド} & \text{String} \\ \hline
\text{指定したパスの最後のコンポーネントの親フォルダの名前を取得する。} & \text{GetParentFolderName メソッド} & \text{String} \\ \hline
\text{指定したパスの最後のコンポーネントのファイル名またはフォルダ名を取得する。} & \text{GetFileName メソッド} & \text{String} \\ \hline
\text{拡張子を除いたファイル名を取得する。} & \text{GetBaseName メソッド} & \text{String} \\ \hline
\text{ファイルの拡張子名を取得する。} & \text{GetExtensionName メソッド} & \text{String} \\ \hline
\text{ランダムに生成された一時ファイルまたはフォルダの名前を取得する。} & \text{GetTempName メソッド} & \text{String} \\ \hline
\text{指定したファイルのバージョンを取得する。} & \text{GetFileVersion メソッド} & \text{String} \\ \hline
\text{新しいフォルダを作る。} & \text{CreateFolder メソッド} & \text{Folder オブジェクト} \\ \hline
\text{フォルダをコピーする。} & \text{CopyFolder メソッド} & \text{なし} \\ \hline
\text{フォルダを移動する。} & \text{MoveFolder メソッド} & \text{なし} \\ \hline
\text{フォルダを削除する。} & \text{DeleteFolder メソッド} & \text{なし} \\ \hline
\text{新しいテキストファイルを作る。} & \text{CreateTextFile メソッド} & \text{TextStream オブジェクト} \\ \hline
\text{ファイルをコピーする。} & \text{CopyFile メソッド} & \text{なし} \\ \hline
\text{ファイルを移動する。} & \text{MoveFile メソッド} & \text{なし} \\ \hline
\text{ファイルを削除する。} & \text{DeleteFile メソッド} & \text{なし} \\ \hline
\text{テキストファイルを開く。} & \text{OpenTextFile メソッド} & \text{TextStream オブジェクト} \\ \hline
\text{指定したドライブが存在するかどうかを確認する。} & \text{DriveExists メソッド} & \text{Boolean} \\ \hline
\text{指定したフォルダが存在するかどうかを確認する。} & \text{FolderExists メソッド} & \text{Boolean} \\ \hline
\text{指定したファイルが存在するかどうかを確認する。} & \text{FileExists メソッド} & \text{Boolean} \\ \hline
\text{ローカルコンピュータで使用できるドライブのコレクションを取得する。} & \text{Drives プロパティ} & \text{Drive オブジェクトのコレクション} \\ \hline
\text{指定したパスのドライブに対応するドライブオブジェクトを取得する。} & \text{GetDrive メソッド} & \text{Drive オブジェクト} \\ \hline
\text{指定したパスに対応するフォルダオブジェクトを取得する。} & \text{GetFolder メソッド} & \text{Folder オブジェクト} \\ \hline
\text{指定した Windows の特殊フォルダのフォルダオブジェクトを取得する。} & \text{GetSpecialFolder メソッド} & \text{Folder オブジェクト} \\ \hline
\text{指定したパスに対応するファイルオブジェクトを取得する。} & \text{GetFile メソッド} & \text{File オブジェクト} \\ \hline
\end{array}
$$

メモ:
数式(KaTeX)を使ったテーブル表示は非常に見ずらい。
表示できる範囲がせまく、横スクロールと縦スクロールしないと全体を見られない。
表形式での表示は考え直した方がよさそうだ。

FileSystemObject オブジェクトの使い方

FileSystemObject を利用するには、 CreateObject 関数でオブジェクトを作成する。

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
:
: 何らかの処理
:
Set fso = Nothing

パスの生成

BuildPath メソッドは、フォルダパスとファイル名をパス区切り文字で組み合わせ、パスを生成する。

BuildPath(Path As String, Name As String) As String
WScript.Echo fso.BuildPath("C:\tmp\vbs", "BuildPath.vbs")
'  → C:\tmp\vbs\BuildPath.vbs

完全パスの取得

GetAbsolutePathName メソッドは、指定したパスの完全なパスを返す。

GetAbsolutePathName(Path As String) As String

次のコードは相対パスから絶対パスを取得する。

WScript.Echo fso.GetAbsolutePathName("Test.vbs")
'  → C:\tmp\vbs\Test.vbs


To be continued…


この記事が気に入ったらサポートをしてみませんか?