Dim fso As New FileSystemObjectFor Each file In Folder.Files
Debug.Print file '输出文件名
Next请问我怎么才能让它按照文件名顺序来输出文件名呢?还是默认它就是按文件名顺序来输出的?
虽然我在本机试验时它能按文件名顺序来输出,但是我不能确认它在别的机器上也这样
Debug.Print file '输出文件名
Next请问我怎么才能让它按照文件名顺序来输出文件名呢?还是默认它就是按文件名顺序来输出的?
虽然我在本机试验时它能按文件名顺序来输出,但是我不能确认它在别的机器上也这样
你做一个实验:
·新建一个目录,比如c:\test
·用记事本在c:\test目录下按B.txt、A.txt、C.txt的先后次序分别保存三个文件
·运行上面的程序,看输出顺序是什么。
如果是
B.txt
A.txt
C.txt
说明默认顺序是以文件在目录中保存的顺序排序;
如果是
A.txt
B.txt
C.txt
说明默认顺序是按文件名排序。
Shell("cmd /c dir /a-d /b /s /on c:\test\*.* >c:\allfiles.txt",vbHide)
'然后读文件c:\allfiles.txt的内容
优点是想怎么排序就怎么排序,参考下面:
c:\>dir /?
显示目录中的文件和子目录列表。DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4] [drive:][path][filename]
指定要列出的驱动器、目录和/或文件。 /A 显示具有指定属性的文件。
attributes D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 - 表示“否”的前缀
/B 使用空格式(没有标题信息或摘要)。
/C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
停用分隔符显示。
/D 跟宽式相同,但文件是按栏分类列出的。
/L 用小写。
/N 新的长列表格式,其中文件名在最右边。
/O 用分类顺序列出文件。
sortorder N 按名称(字母顺序) S 按大小 (从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从早到晚)
G 组目录优先 - 颠倒顺序的前缀
/P 在每个信息屏幕后暂停。
/Q 显示文件所有者。
/S 显示指定目录和所有子目录中的文件。
/T 控制显示或用来分类的时间字符域。
timefield C 创建时间
A 上次访问时间
W 上次写入的时间
/W 用宽列表格式。
/X 显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,
短名称插在长名称前面。如果没有短名称,在其位置则
显示空白。
/4 用四位数字显示年可以在 DIRCMD 环境变量中预先设定命令选项。通过添加前缀 - (破折号)
来替代预先设定的命令选项,例如,/-W。
Dim Fso As Object
Dim Fol As Object
Dim Fil As Object
Set Fso = CreateObject( "Scripting.FileSystemObject ")
Set Fol = Fso.GetFolder(strPath)
For Each Fil In Fol.Files
' Debug.Print Fil.Path '打印路径及文件名
Debug.Print Fso.GetExtensionName(Fil.Path) '打印文件的后缀名
Next
'遍历子目录
For Each Fol In Fol.SubFolders
SeachFile Fol
Next
End Sub 以上也可以试