我不确定这是否是发布此问题的正确位置,因为我有预感,我见证的行为也将使用其他方法观察到。但无论如何,这就是它。
我有一个包含如下代码的VBscript:
For Each objFile In colFiles
...
Next
我在很多不同的系统上运行这段代码已经有一段时间了。我从不打扰按字母顺序排序文件。但今天我偶然发现我的程序逻辑依赖于它。我在新系统上运行代码(在Citrix下),文件以看似随机的顺序返回。
有人知道为什么Windows有时会按字母顺序返回文件,而有时却没有?
添加注释:可能需要注意脚本和输入文件夹位于网络共享上(我的脚本输出随机排序的文件)。
答案 0 :(得分:2)
FileSystemObject不支持排序。见KB 189751 http://support.microsoft.com/kb/189751/en-us
另请查看有关如何在SO Order of Files collection in FileSystemObject
上处理该问题的答案答案 1 :(得分:1)
docs未指定排序。因此,您不能依赖它来订购。 Files属性需要向底层文件系统询问文件,然后将其提供给您,而不进行任何处理。如果该文件系统碰巧按顺序返回文件,那就太好了。如果没有,你将不得不对它进行排序。无论它是否有序,如果您按照特定顺序预期,总是订购它,因为明天的实施可能会改变(正如您刚刚目睹的那样)。
答案 2 :(得分:0)
这取决于您循环的数据结构。 例如,如果在数组和散列集中使用foreach循环,显然会得到不同的顺序。 就个人而言,我对VB一无所知。但它确实在C#中起作用。