`
hereson
  • 浏览: 1428410 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

VBS脚本运行库手册之三 ——子文件夹

    博客分类:
  • 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 包含两个子文件夹 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:\ 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics