如何在windows下统计文件大小

bearsong 2008-04-08 11:30:49
例如,data文件夹下面有很多文本文件,文件名为*日期*.txt的形式,想要统计4月的文件大小,如果用dir,显示如下:

D:\test>dir /s *200804*
驱动器 D 中的卷没有标签。
卷的序列号是 7E8C-5F8A

D:\test 的目录

2008-04-08 22:58 10 20080401.txt
2008-04-08 22:58 4 20080402.txt
2008-04-08 22:58 7 20080403.txt
3 个文件 21 字节

所列文件总数:
3 个文件 21 字节
0 个目录 152,502,272 可用字节

而实际上我只想要“3 个文件 21 字节”行中的21这个数,可以通过什么DOS脚本实现吗?
...全文
305 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forever_Young 2008-04-10
  • 打赏
  • 举报
回复
给你改了一下,可以直接达到你的要求,比方说把下面的代码保存为MyDir.bat,用法: MyDir c:\windows\*.txt

后面的参数可以是任意标准的路径,返回结果就是对应的字节总数。

[code=BatchFile]
@echo off
set f=0
set ff=0
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir "%1"') do (
set /a f=!f!+1)
set /a f=!f!-1
for /f "tokens=*" %%a in ('dir "%1"') do (
set /a ff=!ff!+1
if !ff!==!f! (set fff=%%a)
)
for /f "tokens=3 delims= " %%a in ("%fff%") do @echo %%a

setlocal disabledelayedexpansion
[/code]
ljc007 2008-04-10
  • 打赏
  • 举报
回复
不知道是不是这个意思

[code=BatchFile]@echo off
set SrcDir=D:\test
for /f "tokens=1-3 delims= " %%a in ('dir /s "%SrcDir%\*200804*.txt" ^| findstr "字节"') do (
echo %%c&&goto :end
)
:end
pause[/code]
Forever_Young 2008-04-10
  • 打赏
  • 举报
回复
我这里加tokens=*就是一整行的意思,没啥特别需求,就是为了利用for /f的特性加上的,呵呵。

第一个for是为了获取全部的行数,并把获取的行数减掉1,就是倒数第二行,第二个for用来滤掉不是倒数第二行的行,第三个for用来截取倒数第二行的第三个空格分隔符前面的数字,这个数字就是字节数了。
bearsong 2008-04-10
  • 打赏
  • 举报
回复
可以了!非常感谢楼上的两位高人!

另外请问Forever_Young,tokens=*是什么意思?用什么累加?能否解释一下这两个for语句。
Forever_Young 2008-04-10
  • 打赏
  • 举报
回复
我写的这个可以显示出来 “xxxx个文件 xxxxx字节”这一行。至于显示字节数也简单。

没什么思路,第一个for用来获取dir的总行数,第二个for用来循环对比只显示倒数第二行的信息,其它的不显示。
Forever_Young 2008-04-09
  • 打赏
  • 举报
回复
临时给你写了个批处理,看行不。

把下面的代码保存为bat文件,直接输入文件名就显示当前路径下的,后面跟上你指定的文件夹路径,就显示你指定的文件夹路径下的。

[code=BatchFile]
@echo off

set f=0
set ff=0
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir "%1"') do (
set /a f=!f!+1)
set /a f=!f!-1
for /f "tokens=*" %%a in ('dir "%1"') do (
set /a ff=!ff!+1
if !ff!==!f! @echo %%a
)
setlocal disabledelayedexpansion
[/code]
bearsong 2008-04-09
  • 打赏
  • 举报
回复
弄了一下,好像不行,能解释一下这个批处理的思路吗?最好每条语句也能解释一下!先感谢你!

6,871

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧