VBScript で、複数のフォルダー/ファイルの objFSO や objFolder のような "Scripting.FileSystemObjects" を管理するにはどうすればよいですか?
「メイン」コード セクションで、「Scripting.FileSystemObject」のインスタンス (グローバル) を宣言します。
Set objFSO = CreateObject("Scripting.FileSystemObject")
次に、次のようないくつかの操作を実行します。
If objFSO.FileExists(strOutputFilename) Then
WScript.Echo "Deleting File: " & strOutputFilename
objFSO.DeleteFile strOutputFilename
End If
次に、ループでフォルダーを取得し、それを関数に渡します。
For gintLoop = 0 to (ubound(arraySearchPath))
wscript.echo "Processing folder:" & arraySearchPath(gintLoop)
Set objFolderX = objFSO.GetFolder(arraySearchPath(gintLoop))
Call DoWork (objFolderX, arrayParam1, arrayParam2)
Next
これまでのところ、すべてが明らかです...
ここで、関数内で次のようなことを行います:
a) objFolder からファイル名を収集する
Set lobjFolder = objFSO.GetFolder(objFolderX.Path)
Set lcolFiles = lobjFolder.Files
b)他の(無関係な)パスにファイルが存在するかどうかを確認します
c) さまざまなファイルのサイズを取得します。
lcurInputFileSize = CCur(lobjFile.Size)
d) 各種ファイルの削除
e) 読み取り用にファイルを開く
For Each lobjFile in lcolFiles
lstrTargetFile = lobjFolder.Path & "\" & lobjFile.Name
Set lobjInputFile = objFSO.OpenTextFile(lstrTargetFile, ForReading)
...
f) 書き込み用にファイルを開く
Set lobjOutputFile = objFSO.OpenTextFile(strOutputFilename, ForAppending, True)
g)さまざまなオブジェクトを渡す他のサブ/関数を呼び出す
h)(同じ)関数を再帰的に呼び出して、他のフォルダーを処理します
For Each lobjSubfolderY in objFolderX.SubFolders
Call DoWork (lobjSubfolderY, arrayParam1, arrayParam2)
Next
私の懸念は、フォルダー パス、開いているファイルなどの FileSystemObjects のさまざまな使用法が、後で FileSystemObjects を使用することによって「ステップオン」されないようにする必要があることです。
質問 1: 「メイン」と各 (または一部の) サブ/関数に対して「Scripting.FileSystemObject」(objFSO) の個別のインスタンスが必要ですか (または推奨されますか) ?
質問 2: 同様に、他のさまざまなオブジェクトを管理して、データが失われないようにするにはどうすればよいですか?
ケビン