遍历指定目录下所有子目录以及文件,将结果以任意格式输出到文件保存。

时间:2022-05-09 12:39:56
遍历指定目录下所有子目录以及文件,将结果以任意格式输出到文件保存。
要求:
起始目录和输出文件路径可配置(必须);
输出结果:
当前目录相对于指定目录的层级,从0开始(必须);
当前目录所有文件(包含子目录)大小,单位KB(必须);
当前目录最大文件大小及文件绝对路径(不包含子目录)(必须);
当前目录最小文件大小及文件绝对路径(不包含子目录)(必须);
当前目录包含子目录和不包含子目录的文件总数(必须);
当前目录包含子目录和不包含子目录的文件夹总数(必须);
当前目录包含子目录和不包含子目录的平均文件大小(必须);
所有目录下基于文件后缀的分布数量,无后缀的归为一类(必须);
使用多线程处理(可选);

2 个解决方案

#1


system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录
system("dir /b /ad  c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。

#2


什么理论,shell命令也是API写的,而且没有向下兼容性。API才是微软保证向下兼容性的接口。

shell命令的输出不受你的程序控制,根据用户的各种偏好设置,连在同一台机器上不同用户身份运行输出的结果都可以不同,更加不用谈一个Windows Update就可以更改系统的行为。如果你不能绝对控制用户的计算机(例如用户在你的公司的域里面),那么应该能用API写的就避免用shell命令。

#1


system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录
system("dir /b /ad  c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。

#2


什么理论,shell命令也是API写的,而且没有向下兼容性。API才是微软保证向下兼容性的接口。

shell命令的输出不受你的程序控制,根据用户的各种偏好设置,连在同一台机器上不同用户身份运行输出的结果都可以不同,更加不用谈一个Windows Update就可以更改系统的行为。如果你不能绝对控制用户的计算机(例如用户在你的公司的域里面),那么应该能用API写的就避免用shell命令。