标题: [文件操作] 批处理求某个目录中的文件大小(包括所有子目录) 的几个问题? [打印本页]
作者: gamer5971 时间: 2022-5-5 23:53 标题: 批处理求某个目录中的文件大小(包括所有子目录) 的几个问题?
1.自己写的代码- @echo off
- set directory=e:\bat\
- set /a sumSize=0
- for /f %%i in ('dir /b /a-d /s %directory%') do (
- set /a sumSize=sumSize+%%~zi
- )
- set /a sumSize=sumSize/1024
- echo 目录%directory% 中占用%sumSize%KB
- pause
复制代码
2.论坛 那个<<变脸>> ..头像的版主- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=2* delims= " %%a in ('dir /s /ah /ar /aa /as /a /-c "E:\bat\"') do (
- set var=!num!
- set num=%%b
- )
- echo %var%
- pause
复制代码
问题:
1.就我们平时所说的 我看看我这目录(文件夹) 中有存了多少文件(大小)
编写代码 是否应该是 求我们看到的有后缀的文件大小 (应该有没有后缀 也是文件的玩意)
2.求对大佬 的代码 解释下 有些不太明白
dir /aa 等价与 /a-d 吗 为啥会有 /aa 中命令 /?中没有提及啊
/a 和 /ad /ah /ar 是什么关系 把/a? 所有的罗列完 就能包括 目录中的所有有关文件的属性了吗
3. set var=!num!
set num=%%b这是什么操作 变量没有定义之前 就能使用吗 就算他们是一行 不也要分先后吗? 难道说 我多几层变量传递 就可以得到 该变量(最后的变量) 的前几次值了
其他一些思考 请解惑?
1.我们编写的bat文件 是不是把cmd命令处理的结果 分析加以利用
2.cmd/bat 的 基本处理 单元是 行
for 操作是 每行执行 对每行的数据操作
3 cmd 处理的是 字符串 dir 结果可以 再次 别的 命令使用 如 管道符 |
作者: flashercs 时间: 2022-5-6 08:54
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=2* delims= " %%a in ('dir /s /a-d /-c "E:\bat\"') do (
- set var=!num!
- set num=%%b
- )
- echo %var%
- pause
复制代码
dir /a 参数用了多次,但仅最后一次有效果,以前的无效.多余了.
两个变量var和num组成一个queue,就是取dir 结果中的两行数据,最终结果是dir的最后两行; 你看看最后两行是什么结果,就明白了.
作者: flashercs 时间: 2022-5-6 09:47
cmd跟其他console程序一样是处理的字符串,最小单位是字符,比如 a
不仅dir,所有console程序或命令都可以通过|传递给其他console程序或命令.
console程序通常有3个缓存:input buffer,output buffer, error buffer.复制代码
将command1的output buffer内容输出到command2的input buffer中,command2就能处理这些内容.
以此类推,可以有无数管道传递,但是最后一个管道的output buffer默认是输出到控制台,在窗口中显示出来,当然可以重定向到文件中- command1|command2|command3 >file.txt
复制代码
或者用for /f读取出来,- for /f %%A in ('command1^|command2^|command3') do echo %%A
复制代码
作者: gamer5971 时间: 2022-5-6 10:05
回复 2# flashercs
之前的多余 是什么 意思在一些高级语言 种 方法名(参数1,参数2,参数n)
结果可以根据 参数的来 展示结果
我理解的 这 dir /s /ah /ad /b
在输出结果种既要 隐藏项目 又要目录
/s /b 参数是 并列的 所以我 以为 /ah /ad 也是并列的 实际是什么呢?怎么测试下 ?
作者: gamer5971 时间: 2022-5-6 10:06
回复 3# flashercs
涨知识了
作者: gamer5971 时间: 2022-5-6 10:11
回复 2# flashercs
两个变量var和num组成一个queue ?
queue 是什么?
每次不是只能处理一行吗?
for()中的语法 是 在获取上一行?
作者: 科零仿佛 时间: 2022-12-31 11:25
楼主,能解释下为啥%%~zi表示文件大小呢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |