爲了需要知道文件夾中存放的文件,你需要知道文件夾子文件夾,這樣,你才能更好的瞭解文件夾的整體結構。文件夾對象包含了一個 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 包含兩個子文件夾 2001、2002,但是它不能告訴你他們的子文件夾的信息。
幸運的是,你可以用遞歸來查詢一系列子文件夾的的信息。例如用 Subfolders 屬性返回了一些 top-level 的子文件夾:
爲返回完整的一系列子文件夾的信息,你需要用遞歸函數。這個函數用來調用它自己。下面腳本可以列舉出文件夾的所有子文件夾:
1. 創建一個 FSO 對象實例
2. 用 GetFolder 的方法來綁定到文件夾 C:/Scripts。GetFolder 的方法用來返回文件夾對象 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:/