2

我不确定这是否是发布此问题的正确位置,因为我有一种预感,我目睹的行为也会被其他方法观察到。但无论如何,它来了。

我有一个包含如下代码的 VBscript:

For Each objFile In colFiles
...
Next

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

有谁知道为什么 Windows 有时会返回按字母顺序排序的文件,而有时却不返回?

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

4

3 回答 3

2

FileSystemObject 不支持排序。请参阅知识库 189751 http://support.microsoft.com/kb/189751/en-us

另请查看有关如何处理FileSystemObject 中的 SO Order of Files 集合的答案

于 2013-07-10T17:27:54.333 回答
1

文档没有指定排序。因此,您不能依赖它来下订单。Files 属性需要向底层文件系统询问文件,然后将其原样提供给您,无需任何处理。如果该文件系统恰好按顺序返回文件,那就太好了。如果没有,您将不得不对其进行排序。不管它是否按顺序排列,如果您希望它按特定顺序排列,您应该始终订购它,因为明天的实现可能会发生变化(正如您刚刚见证的那样)。

于 2013-07-04T22:38:47.930 回答
0

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

于 2013-07-04T20:51:40.570 回答