2012年11月24日土曜日

[Script][VBS]再帰処理

再帰処理を行うプログラムの例です。

ListFolder では Cドライブから始まって各サブフォルダを繰り返し呼び出すことによって全フォルダ走査をしています。

なお、アクセスできないフォルダに触れるをエラーとなるためにエラーが起きても処理を続行する指示 On Error Resume Next が必要になります。
VBS のアイコンをダブルクリックして実行した場合、ダイアログが無数に繰り返し表示されるため、コマンドライン起動でないと動かないようにしています。

ListFolders.vbs On Error Resume Next

Const CSCRIPT_EXE = "cscript.exe"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objRootFolder = objFSO.GetFolder("C:\")

IF LCase(Right(WScript.FullName, Len(CSCRIPT_EXE))) <> CSCRIPT_EXE Then
  WScript.Echo CSCRIPT_EXE & "から実行してください"
  WScript.Quit
End IF

Ret = ListFolder(objRootFolder)

WScript.echo "Finish!"

Function ListFolder(objFolder)
  WScript.Echo objFolder.Path

  For Each objSubFolder in objFolder.SubFolders
    Ret = ListFolder(objSubFolder)
  Next

  ListFolder = 0
End Function
参考:


Script のページに戻る

0 件のコメント:

コメントを投稿