こんにちは。現場で泥臭い自動化を積み重ね、今はシステム運用の自動化アーキテクチャを設計している「先輩」です。
今日は、多くの運用担当者が一度は直面する「ファイル管理」の壁を、VBScript(FSO)でスマートに乗り越える方法を伝授します。マクロの記録で生成された巨大なコードに頼るのはもう終わり。メモリ効率を極め、再利用性を高めた「真の自動化ツール」を一緒に作りましょう。
—
なぜ「FSO」なのか? その本質を理解しよう
VBScriptでファイル操作を行う際、避けて通れないのが FileSystemObject (FSO) です。
なぜこれを使うのか? それは、OSの深層部分(Windowsのファイルシステム)を、まるで自分の手足のように操れるからです。`Scripting.FileSystemObject` は、単なる命令の集合体ではありません。OSとの対話窓口です。
今回のミッション:ファイル属性の「見える化」
今回作成するツールは、指定フォルダ配下の全ファイルを巡回し、以下のスペックをCSVとして書き出します。
- フルパス
- ファイルサイズ(バイト単位)
- 作成日時
- 最終アクセス日時
—
実践コード:高速・堅牢な「ファイル台帳生成スクリプト」
以下のコードをメモ帳に貼り付け、`.vbs` という拡張子で保存してください。これがあなたの最強の武器になります。
‘ FileInventory.vbs
‘ 運用現場で「使える」ファイルリスト生成ツール
Option Explicit ‘ 変数宣言を強制し、バグを未然に防ぐ
Dim fso, targetFolder, outputFile
Dim objFolder, objFile
Dim csvFile
‘ — 設定エリア —
Dim rootPath : rootPath = “C:\TargetFolder” ‘ 収集したいフォルダパス
Dim outputPath : outputPath = “C:\Inventory.csv” ‘ 出力先
‘ —————-
Set fso = CreateObject(“Scripting.FileSystemObject”)
‘ 書き込み用ファイルの作成(True: 上書き許可)
Set csvFile = fso.CreateTextFile(outputPath, True)
‘ ヘッダーの書き込み
csvFile.WriteLine “ファイル名,パス,サイズ(Byte),作成日時,最終アクセス日時”
‘ 再帰的な処理の呼び出し
Set targetFolder = fso.GetFolder(rootPath)
ProcessFolder targetFolder
csvFile.Close
MsgBox “完了しました!” & vbCrLf & “出力先: ” & outputPath
‘ フォルダを巡回する再帰関数
Sub ProcessFolder(folder)
Dim subFolder, file
‘ ファイル情報の取得
For Each file In folder.Files
csvFile.WriteLine “””” & file.Name & “””,””” & file.Path & “””,” & _
file.Size & “,” & file.DateCreated & “,” & _
file.DateLastAccessed
Next
‘ サブフォルダがあれば再帰的に潜る
For Each subFolder In folder.SubFolders
ProcessFolder subFolder
Next
End Sub
—
ここが「プロ」のこだわり:3つのポイント
1. `Option Explicit` は開発者の良心
VBScriptは変数宣言なしでも動いてしまいますが、それは「スペルミスでバグが発生しても沈黙する」ことを意味します。`Option Explicit` を書くことで、定義していない変数を即座に指摘させましょう。これは「事故を防ぐためのガードレール」です。
2. 再帰処理(Recursion)の美学
`ProcessFolder` 関数の中で、自分自身を呼び出していますね。これが「再帰」です。フォルダが何階層あっても、この仕組みなら自動的に最深部まで探しに行きます。コードが短く、かつどんな複雑なフォルダ構成にも対応できる。これが自動化エンジニアの嗜みです。
3. ダブルクォーテーションの扱い
CSV出力時にパスやファイル名にカンマが含まれていると、Excelで開いた際に列がズレます。`”””” & file.Name & “”””` のようにダブルクォーテーションで囲むことで、Excel側で正しく「一つの文字列」として解釈させる工夫をしています。
—
陥りやすい罠と対策
- 権限エラー(Permission Denied):
システムフォルダ(`C:\Windows`など)を読みに行くと、アクセス権限で止まることがあります。ツールを実行する際は「管理者として実行」するか、アクセス権のあるフォルダを指定してください。
- ファイルが開かれている:
Excelで出力先のCSVを開いたままスクリプトを実行すると、「書き込み禁止」でエラーになります。実行前には必ずファイルを閉じる習慣を。
—
先輩からのアドバイス
VBScriptは、今や「古い」と言われることもあります。しかし、「Windows環境さえあれば、何もインストールせずに即座に動く」というその身軽さは、クラウド時代になっても決して色褪せません。
まずはこのコードを動かし、自分の手でフォルダ構成をリスト化する体験をしてください。それが、自動化の世界へ踏み出す第一歩です。
ここをクリアしたあなたは、もう「マクロの記録」に頼るだけの初心者ではありません。「OSを支配するエンジニア」の入り口に立っています。次は何を自動化しましょうか? 応援していますよ。
