Board logo

标题: [数值计算] 批处理如何获取每个子文件夹里的文件数量和文件大小总和 [打印本页]

作者: 是抠脚小仙女    时间: 2018-7-11 08:48     标题: 批处理如何获取每个子文件夹里的文件数量和文件大小总和

本帖最后由 pcl_test 于 2019-3-16 21:40 编辑

bat 子目录文件大小和
分别查询
1.根目录的文件数,文件大小和
2.子目录的文件数,文件大小和
可以帮我看下问的子目录查询的时候哪里出了错吗?
一直显示查询不到文件
作者: 是抠脚小仙女    时间: 2018-7-11 09:03

不好意思,上面的代码贴错了
  1. pushd %~dp0
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. rem 查询根目录
  5. set /a count = 0
  6. set /a file1size = 0
  7. for /f %%i in ('dir /b /a-d') do (
  8.         set /a count=count+1
  9.         set /a file1size=file1size+%%~zi
  10. )
  11. echo 根目录
  12. echo %cd% 文件数:!count!个、文件大小和:!file1size!个字节
  13. rem 查询子目录
  14. set /a counter = 0
  15. set /a file2size = 0
  16. for /f %%i in ('dir r* /b/a') do (
  17. if exist %%a (
  18. set /a counter=counter+1
  19.                         set /a file2size = file2size+%%~za
  20. )
  21. )
  22. )
  23. echo 子目录
  24. echo %cd% 文件数:!counter!个、文件大小和:!file2size!个字节
  25. popd
  26. pause
复制代码
这个才是正确的
作者: yhcfsr    时间: 2018-7-11 09:27

本帖最后由 yhcfsr 于 2018-7-11 09:33 编辑

第21行,循环变量%%a从哪里来的,不应该是%%i??
而且你这脚本本身就有很多问题:
计算大小之和时,如果数字超过4G,计算就会出错;
第20行,dir这样用不会扫描到目录吗??
第21行,dir扫描到的循环变量肯定是存在的(除非在脚本运行期间,对目录进行了更改),我认为没什么必要加判断;
涉及路径的变量,最好是加上双引号,防止路径中有空格出错
作者: 是抠脚小仙女    时间: 2018-7-11 10:17

回复 3# yhcfsr
刚开始接触批处理,是自己做练习用的,所以计算大小不会超过4G,
21行%%a不好意思,是我刚才在修改的时候忘记该回去了,确实是%%i
我原来的想法是判断是否为文件,,是的话就进入计算,被你这么一说我也怀疑了自己的想法。
那你可以给我提供一下思路吗?我被卡在这里想了好久。
不知道判断为文件夹的时候如何进入子目录进行计算。
因为是新手还不是很懂批处理
作者: 是抠脚小仙女    时间: 2018-7-11 10:18

回复 3# yhcfsr


    还是说有命令可以直接跳过当前目录进入子目录?
作者: yhcfsr    时间: 2018-7-11 10:19

回复 4# 是抠脚小仙女
你可加论坛的QQ群或者看我签名,加我好友,以便实时沟通.
作者: 是抠脚小仙女    时间: 2018-7-11 10:33

回复 6# yhcfsr


    我不能实时沟通。。。我上班时间只能开网页,不能上qq之类的聊天软件,但是我会加你的,一会午休了就加你。
作者: 是抠脚小仙女    时间: 2018-7-11 12:12

回复 3# yhcfsr


   大佬,加你QQ没反应呀。。
作者: 是抠脚小仙女    时间: 2018-7-11 14:05

回复 6# yhcfsr


    我琢磨出来了!查询当前目录的所有目录,再把查询到的目录当作路径进行查询!!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2