找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28753|回复: 8

[数值计算] 批处理如何获取每个子文件夹里的文件数量和文件大小总和

[复制链接]
发表于 2018-7-11 08:48:14 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2019-3-16 21:40 编辑

bat 子目录文件大小和
分别查询
1.根目录的文件数,文件大小和
2.子目录的文件数,文件大小和
可以帮我看下问的子目录查询的时候哪里出了错吗?
一直显示查询不到文件
 楼主| 发表于 2018-7-11 09:03:44 | 显示全部楼层
不好意思,上面的代码贴错了
  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
复制代码
这个才是正确的
发表于 2018-7-11 09:27:17 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-7-11 09:33 编辑

第21行,循环变量%%a从哪里来的,不应该是%%i??
而且你这脚本本身就有很多问题:
计算大小之和时,如果数字超过4G,计算就会出错;
第20行,dir这样用不会扫描到目录吗??
第21行,dir扫描到的循环变量肯定是存在的(除非在脚本运行期间,对目录进行了更改),我认为没什么必要加判断;
涉及路径的变量,最好是加上双引号,防止路径中有空格出错
 楼主| 发表于 2018-7-11 10:17:12 | 显示全部楼层
回复 3# yhcfsr
刚开始接触批处理,是自己做练习用的,所以计算大小不会超过4G,
21行%%a不好意思,是我刚才在修改的时候忘记该回去了,确实是%%i
我原来的想法是判断是否为文件,,是的话就进入计算,被你这么一说我也怀疑了自己的想法。
那你可以给我提供一下思路吗?我被卡在这里想了好久。
不知道判断为文件夹的时候如何进入子目录进行计算。
因为是新手还不是很懂批处理
 楼主| 发表于 2018-7-11 10:18:22 | 显示全部楼层
回复 3# yhcfsr


    还是说有命令可以直接跳过当前目录进入子目录?
发表于 2018-7-11 10:19:26 | 显示全部楼层
回复 4# 是抠脚小仙女
你可加论坛的QQ群或者看我签名,加我好友,以便实时沟通.
 楼主| 发表于 2018-7-11 10:33:32 | 显示全部楼层
回复 6# yhcfsr


    我不能实时沟通。。。我上班时间只能开网页,不能上qq之类的聊天软件,但是我会加你的,一会午休了就加你。
 楼主| 发表于 2018-7-11 12:12:15 | 显示全部楼层
回复 3# yhcfsr


   大佬,加你QQ没反应呀。。
 楼主| 发表于 2018-7-11 14:05:55 | 显示全部楼层
回复 6# yhcfsr


    我琢磨出来了!查询当前目录的所有目录,再把查询到的目录当作路径进行查询!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 13:22 , Processed in 0.019226 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表