Vbscript 为什么由For Each循环返回的文件被排序,但并不总是这样?

Vbscript 为什么由For Each循环返回的文件被排序,但并不总是这样?,vbscript,filesystemobject,Vbscript,Filesystemobject,我不确定这是否是发布此问题的正确位置,因为我有一种预感,即我所见证的行为也会通过其他方法被观察到。但不管怎么说,它来了 我有一个VBscript,其中包含如下代码: colFiles中每个objFile的 … 下一个 我在许多不同的系统上运行这段代码已经有相当一段时间了。我从不费心按字母顺序排列文件。但是今天我偶然发现我的程序的逻辑依赖于它。我在一个新系统上运行了代码(在Citrix下),文件以看似随机的顺序返回 有人知道为什么Windows有时返回按字母顺序排序的文件,而有时不返回吗 补充说

我不确定这是否是发布此问题的正确位置,因为我有一种预感,即我所见证的行为也会通过其他方法被观察到。但不管怎么说,它来了

我有一个VBscript,其中包含如下代码:

colFiles中每个objFile的


下一个

我在许多不同的系统上运行这段代码已经有相当一段时间了。我从不费心按字母顺序排列文件。但是今天我偶然发现我的程序的逻辑依赖于它。我在一个新系统上运行了代码(在Citrix下),文件以看似随机的顺序返回

有人知道为什么Windows有时返回按字母顺序排序的文件,而有时不返回吗


补充说明:可能需要注意的是,脚本和输入文件夹都位于网络共享上(我的脚本在其中输出随机排序的文件)。

这取决于您循环使用的数据结构。 例如,如果在数组和哈希集中使用foreach循环,显然会得到不同的顺序。
就个人而言,我对VB一无所知。但它在C#中确实是这样工作的。

不指定排序。因此,您不能依赖它来获得订单。Files属性需要向底层文件系统请求这些文件,然后将其按原样提供给您,而无需任何处理。如果文件系统碰巧按顺序返回文件,那就太好了。如果没有,你就得把它分类。无论它是否有序,如果您希望它以特定的顺序进行,则应该始终对其进行排序,因为实现明天可能会更改(正如您刚才看到的那样)。

FileSystemObject不支持排序。见KB 189751


另外,请查看如何处理这一问题的答案,这样VBscript就没有Java/C那样的通用集合了。我的文件集合由对文件夹对象的方法调用返回(文件夹对象又由FileSystemObject方法(fso.getFolder)创建)。关于该集合的实现,几乎没有发布任何细节。但除此之外,你的回答并不能真正解释我所目睹的行为:在某些系统上排序,而不是在其他系统上排序。毫无疑问,我的代码包含了一个基于错误假设的错误。为什么我的代码开始失败并不是我想要解决的谜。正如我在帖子中所说,我不确定这是否真的是一个VBscript问题。我想这确实是一个Windows问题。Windows(或文件系统)何时返回排序结果,何时不返回?可能需要注意的是,脚本和输入文件夹都位于网络共享上。