【入門編】【ドライブ種別判定】FileSystemObject の DriveType プロパティを用いたリムーバブル・ネットワークドライブ自動分岐 – VBScript (Visual Basic Scripting Edition)解析バイブル

スポンサーリンク

【VBScriptの真髄】FileSystemObjectでドライブを「見極める」!安全な自動化の第一歩

こんにちは。自動化の世界へようこそ。
VBScriptは、現代の洗練された言語に比べれば古風なツールに見えるかもしれません。しかし、WindowsというOSの深淵を直接操作できるその身軽さは、今なお現場の最前線で輝きを放っています。

今回は、自動化スクリプトにおける「守り」の要、「ドライブ種別判定」についてお話ししましょう。

「USBメモリだと思ってファイルを書き込んだら、実はネットワークドライブだった」――そんな事故を防ぐための、極めて実践的な知見を授けます。

1. なぜ「ドライブの判定」が必要なのか?

自動化スクリプトを書くとき、私たちはつい「処理」に目が行きがちです。しかし、プロフェッショナルなエンジニアはまず「環境の確認」から始めます。

  • USBメモリ(リムーバブル): 接続が不安定、あるいは途中で抜かれるリスクがある。
  • ネットワークドライブ: サーバーの負荷や通信環境に左右される。
  • ローカルHDD: 高速だが、容量制限や書き込み権限に注意が必要。

これらを区別せずにファイルを書き込むのは、目隠しをして高速道路を走るようなものです。`FileSystemObject (FSO)` の `DriveType` プロパティを使って、相手が誰なのかを正しく見極めましょう。

2. 実践コード:安全な書き込みのための判定ロジック

まずは、以下のコードを見てください。これが、私の現場で培った「安全な判定」のテンプレートです。

Option Explicit

‘ FSOオブジェクトを生成
Dim fso
Set fso = CreateObject(“Scripting.FileSystemObject”)

‘ 判定したいドライブレター(例: “E:”)
Dim targetDriveLetter
targetDriveLetter = “E:”

‘ ドライブの存在確認と判定
If fso.DriveExists(targetDriveLetter) Then
Dim drv
Set drv = fso.GetDrive(targetDriveLetter)

Select Case drv.DriveType
Case 0: WScript.Echo “不明なドライブです。”
Case 1: WScript.Echo “リムーバブルメディアです。データの一時退避に適しています。”
Case 2: WScript.Echo “固定ドライブ(HDD/SSD)です。恒久的なデータ保存に向いています。”
Case 3: WScript.Echo “ネットワークドライブです。通信遅延に注意が必要です。”
Case 4: WScript.Echo “CD-ROM等の光学メディアです。書き込みはできません。”
Case 5: WScript.Echo “RAMディスクです。”
Case Else: WScript.Echo “未知の種別です。”
End Select
Else
WScript.Echo “指定されたドライブは接続されていません。”
End If

‘ 後始末(重要:メモリ解放の精神を忘れない)
Set drv = Nothing
Set fso = Nothing

3. コードの解説:ここを押さえれば「脱・初学者」

① `DriveType` の正体

`DriveType` は、ドライブの性質を数値(定数)で返します。

  • 0: Unknown / 1: Removable / 2: Fixed / 3: Remote

この数字を `Select Case` で分岐させるのが、VBScriptにおける「安全策」の定石です。

② `fso.DriveExists` を過信しない

初心者はすぐに `GetDrive` を呼びたがりますが、もしそのドライブが存在しなかったら? スクリプトは無慈悲にも「実行時エラー」で停止します。必ず `DriveExists` で生存確認をするのが、エラーに強いスクリプトの基本です。

③ メモリの解放 (`Nothing`)

VBScriptはCOMオブジェクトを扱います。明示的に `Set = Nothing` を行うのは、「使い終わった道具を元の場所に戻す」という礼儀のようなもの。複雑な自動化を組む際、この習慣がメモリリークを防ぎ、スクリプトの安定性を劇的に向上させます。

4. 陥りやすい罠:ネットワークドライブの「一時的な切断」

現場でよくあるのが、「スクリプト起動時には接続されていたネットワークドライブが、処理の途中で切断される」というケースです。

`DriveType` で一度確認したからといって、ループの最後まで安全とは限りません。本当に堅牢なシステムを作りたいのであれば、「ファイルを書き込む直前にもう一度存在確認を行う」という二段構えの防壁を構築してください。

最後に:自動化は「慎重さ」から始まる

VBScriptは、OSと対話するための強力な杖です。しかし、その杖を振るうには、自分の足元を確かめる慎重さが不可欠です。

今日学んだ `DriveType` を活用することで、あなたの自動化ツールは「ただ動くもの」から「安心して任せられる相棒」へと進化します。

もし、ここをクリアできれば、あなたはもうVBScriptの初歩を卒業したと言っていいでしょう。次は、エラーハンドリング(`On Error Resume Next` の正しい使い方)の世界でお会いしましょう。

エンジニアとしてのあなたの旅路に、幸多からんことを!

タイトルとURLをコピーしました