当前位置:  开发笔记 > 后端 > 正文

我可以使用FileSystemObject使用其索引从文件夹中获取单个文件吗?

如何解决《我可以使用FileSystemObject使用其索引从文件夹中获取单个文件吗?》经验,为你挑选了1个好方法。

如果文件夹中只有一个文件,我可以在知道其名称的情况下选择它或者遍历文件夹中的文件吗?

(代码是VBS,但它可以是任何东西,FSO在这里是有趣的部分.)

这不适合我:

dim fso
set fso = CreateObject("Scripting.FileSystemObject")
dim myFolder
Set myFolder = fso.getFolder("E:\test")
Dim myfiles
Set myfiles = myFolder.Files

WScript.Echo myfiles.Item(0).Path

两者都没有WScript.Echo myfiles(0).Path奏效.(测试指数0,1都失败了.)

使用for each来获得一个文件似乎有点过分.此外,我不应该以某种方式迭代一个简单的For循环,而不是For Each?所以必须有索引......我似乎无法找到它们.



1> Ansgar Wiech..:

不,您不能在不知道其名称的情况下选择文件或迭代文件夹中的文件,至少不能使用FileSystemObject实例.如文档所述Item,Files集合的属性需要项目的名称,而不是其索引:

物品属性(文件)

获取Files对象中的指定项

句法

object.Item(key)[ = newitem]

参数

对象
必需.File对象的名称.

spec
必需.项目的名称.

并非每个集合都允许通过索引访问.

如果你正在寻找一个神奇的技巧,你可以做这样的事情:

dir = "C:\your\folder"

Set sh = CreateObject("WScript.Shell")
Set ex = sh.Exec("cmd /c dir /b """ & dir & """")
While ex.Status = 0 : WScript.Sleep 100 : Wend

filename = Split(ex.StdOut.ReadAll, vbNewLine)(0)

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(fso.JoinPath(dir, filename))

然而,这种方法既不是非常优雅也不是非常强大,我没有看到它的优势

dir = "C:\your\folder"
Set fso = CreateObject("Scripting.FileSystemObject")
For Each item In fso.GetFolder(dir).Files
  Set f = item
Next

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有