◎VBS腳本運行庫手冊之三 ——子文件夾

爲了需要知道文件夾中存放的文件,你需要知道文件夾子文件夾,這樣,你才能更好的瞭解文件夾的整體結構。文件夾對象包含了一個 Subfolders 屬性,用來放會在文件夾下的 top-level 子文件夾的信息。

Top-level 子文件夾是直接在文件夾下面的。在子文件夾中的子文件夾不在這個範圍之內。例如,在下例中,只有 Subfolder1 Subfolder2

是文件夾 scripts top-level 的子文件夾。所以,如果用 Subfolders 這個屬性來返回值的話,就只是會返回 Subfolder1 Subfolder2

 

爲了得到一個子文件夾的集合,你的腳本必須:

1. 創建一個 FSO 實例

2. GetFolder 的方法綁定到一個文件夾。

3. 創建一個對象 reference 來表示 Subfolders 屬性。這個是一個集合對象,因爲它含有很多個對象。

在得到了對象 reference 這樣一個集合之後,你可以用一個 For Each 循環來列舉出子文件夾。下列腳本綁定到文件夾

C:/FSO,然後返回子文件夾的大小和名字。除了文件夾的名字之外,你可以返回信息。

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2   Set objFolder = objFSO.GetFolder("C:/FSO")

3   Set colSubfolders = objFolder.Subfolders

4   For Each objSubfolder in colSubfolders

5     Wscript.Echo objSubfolder.Name, objSubfolder.Size

6   Next

和你的文件系統的設計有關,有時知道 top-level

的子文件夾就可以提供足夠的文件夾結構的信息。在多數文件系統中,文件夾是嵌套的,或者是被嵌套的。關於子文件夾的集合可以告訴你C:/Accounting 包含兩個子文件夾 20012002,但是它不能告訴你他們的子文件夾的信息。

幸運的是,你可以用遞歸來查詢一系列子文件夾的的信息。例如用 Subfolders 屬性返回了一些 top-level 的子文件夾:

爲返回完整的一系列子文件夾的信息,你需要用遞歸函數。這個函數用來調用它自己。下面腳本可以列舉出文件夾的所有子文件夾:

1. 創建一個 FSO 對象實例

2. GetFolder 的方法來綁定到文件夾 C:/ScriptsGetFolder 的方法用來返回文件夾對象    C:/Scripts.然後這個

C:/Scripts 作爲遞歸子函數 ShowSubFolders 的參數。這個子程序會列舉出所有的 C:/Scripts 下的子文件夾。返回一個包含在

C/Scripts 下所有子文件夾的信息。這個集合有兩個值:Subfolder1 Subfolder 2.

4. 返回第一個參數的路徑 Subfolder1。這個子程序用這個來作爲參數將它輸入給它自身。換句話說,腳本現在調用 ShowSubFolders,並且參數是 Subfolder1

5. 返回在 Subfolder1 中的所有參數。這個集合有兩個值:Subfolder1A and Subfolder 1B.

6. 回顯第一個集合的路徑,Subfolder1A。子程序用這個來作爲參數調用自己。換句話說,就是用 ShowSubFolders 這個函數,那麼它的參數是 Subfolder1A來作參數。

7. 繼續執行下一個參數。因爲在 Subfolder1A中沒有了子文件夾。這個子程序用Subfolder1B 作爲參數。

8. .完成了關於文件夾 Subfolder1 的循環。這個過程結束在 Subfolder1B 沒有子文件夾。腳本然後用 Subfolder2

來作爲參數,並且重複上面整個過程。

1 Set FSO = CreateObject("Scripting.FileSystemObject")

2    ShowSubfolders FSO.GetFolder("C:/Scripts")

3    Sub ShowSubFolders(Folder)

4     For Each Subfolder in Folder.SubFolders

5     Wscript.Echo Subfolder.Path

6     ShowSubFolders Subfolder

7     Next

8    End Sub

當用 CScript 運行的時候,命令行中顯示如下:

C:/scripts/Subfolder 1

C:/scripts/Subfolder 1/Subfolder 1A

C:/scripts/Subfolder 1/Subfolder 1B

C:/scripts/Subfolder 2

C:/scripts/Subfolder 2/Subfolder 2A

C:/scripts/Subfolder 2/Subfolder 2A/Subfolder 2A-1

C:/scripts/Subfolder 2/Subfolder 2B

C:/scripts/Subfolder 2/Subfolder 2C

爲了獲得完整的文件夾列表,你可以從根文件夾查起:比如 C:/  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章