|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『楼 主』:
[已结]如何检测文件夹的大小?
使用 LLM 解释/回答一下
用for语句中的%~zi只能检测到文件的大小,检测文件夹时一律显示为0。
现在想达到以下目的:不产生临时文件,仅用CMD命令,如何检测文件夹的大小?要求适用于XP和2K环境。
Last edited by willsort on 2006-6-14 at 17:23 ]
|
|
2006-6-11 18:41 |
|
|
Climbing
铂金会员
       网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
dir DstDir /a/s/w | find "个文件"
最后一行中有需要的内容。
|

偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2006-6-11 18:48 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
|
2006-6-11 19:26 |
|
|
Climbing
铂金会员
       网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
按说你也算是批处理的老手了,提取最后一行的内容是你自己应该可以解决的问题。
有什么问题,自己多动手试一试,或者查一下老帖子,一问再问对提高你自己的水平毫无长进。
|

偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2006-6-11 20:50 |
|
|
3742668
荣誉版主
      
积分 2013
发帖 718
注册 2006-2-18
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
有一点需注意:如果目录下包含目录的话是不会把子目录的空间加上去的。
如果需要计算包括子目录的大小的话,建议还是用dir /a/s | find /v配合for来自己加吧。
|
|
2006-6-11 21:16 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
呵呵,Climbing说的是。
参考了以前的帖子,得到如下代码,但是只适用于XP,2K下会出错。以前在虚拟机中测试过的,好象是find这条命令用在这条语句中会有问题,至于具体怎么回事,因为虚拟机已经被我卸了,2K的系统盘也找不着,我现在也闹不清了。
顺便再提个相关的问题:如果要提取的不是最后一行,而是倒数的第N行,又该如何实现?(我水平还很差,提的问题比较菜鸟一点,各位帮帮忙吧。)
: @echo off
cls
for /f "tokens=3" %%z in ('dir /a /s /-c d:\test^|find "个文件"') do set /a size=%%z
echo %size%
if %size% gtr 0 echo 大于0
pause
Last edited by namejm on 2006-6-11 at 21:44 ]
|
|
2006-6-11 21:38 |
|
|
Wengier
系统支持
             “新DOS时代”站长
积分 27736
发帖 10521
注册 2002-10-9
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
如果允许使用第三方工具的话,可以用DU之类的工具直接做到的。
|

Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
 |
|
2006-6-12 00:24 |
|
|
bagpipe
银牌会员
     DOS联盟捡破烂的
积分 1144
发帖 425
注册 2005-10-20 来自 北京
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
@echo off
set /p i=输入倒数第几行行数:
for /f "tokens=1 delims=:" %%i in ('findstr /n . 要搜索的文件.bat') do set /a
u=%%i
set /a r=%u%-%i%+1
findstr /n . 要搜索的文件.bat|findstr "%r%"
注意要查找的文件中必须没有空行,如果有空行就没有作用了
|
|
2006-6-12 13:27 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
当i为10以内的数的时候,bagpipe的方法很管用。但是,超过9之后就有问题了。正在测试,看能不能找到更好的办法。
|
|
2006-6-12 14:05 |
|
|
bagpipe
银牌会员
     DOS联盟捡破烂的
积分 1144
发帖 425
注册 2005-10-20 来自 北京
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
可以有更好的办法,不过我上面已经说了,如果文件中存在空行判断就不准了,你查看一下文件中是不是有空行啊?我测试的时候10行以外的我也测试了,不过那段代码只是粗略的写了一下,跟本就不完善,例如如果文件没有倒数第几行怎么办之类的,呵呵,你在完善一下吧,OK?
我流.......泪而走
|
|
2006-6-12 15:56 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
老大,什么叫流泪而走啊?难道这两天北京又起沙尘暴了? 
这两天昏头昏脑的,做事老走神,有点力不从心了。我再看看吧。
|
|
2006-6-12 16:51 |
|
|
3742668
荣誉版主
      
积分 2013
发帖 718
注册 2006-2-18
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
几日不见,bagpipe的手段高明了不少哦。尤其最后一句用findstr来显示结果而不用for甚合我意,不过也正是这句上有点小毛病,当内容中包含行号时可能会出现错误,而且出现错误的可能性还是比较大的,所以建议把最后一句改为:
findstr /n . 要搜索的文件.bat | findstr /b %r%: || echo 空白行
|
|
2006-6-12 17:37 |
|
|
bagpipe
银牌会员
     DOS联盟捡破烂的
积分 1144
发帖 425
注册 2005-10-20 来自 北京
状态 离线
|
『第 13 楼』:
使用 LLM 解释/回答一下
呵呵,偶可不高明,高明的人是你,又学到了,空白行是怎么过滤掉的,呵呵,还为这个空白行发愁呢......
|
|
2006-6-12 17:57 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第 14 楼』:
使用 LLM 解释/回答一下
Re 3742668『第 5 楼』:
dir /a/s 最后列出的文件总数和总字节数,是包括嵌套的各级子目录的。
Re namejm『第 6 楼』:
昨天找了一台Win2000环境测试了,类似 ('dir ^| findstr "string"') 或者 ('"dir|findstr "string" "' ) 都得到了正常的结果。所以仍无法确定你所说的兼容性问题何在。
Re bagpipe『第 13 楼』:
空行没有字符,而.表示匹配任意一个字符,所以被过滤了。后面加一个表示任意多个的*就可以了。可惜不支持表示一个或更多个的字符的+,如果要过滤空行的话,只能以..*来代替。
|

※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2006-6-12 18:24 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 15 楼』:
使用 LLM 解释/回答一下
Originally posted by willsort at 2006-6-12 18:24:
Re namejm『第 6 楼』:
昨天找了一台Win2000环境测试了,类似 ('dir ^| findstr "string"') 或者 ('"dir|findstr "string" "' ) 都得到了正常的结果。所以仍无法确定你所说的兼容性问题何在。
我是在虚拟机中测试的,可能是虚拟机的原因吧。等有机会我再找台2K的机子实地来测试一下。
向版主的热心和勤劳致敬。
|
|
2006-6-12 20:30 |
|