[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]批处理用不同的方法获取文件(夹)的大小

本帖最后由 小文 于 2015-4-25 08:40 编辑

在网上找了半天,大概这东西还是不容易实现吧。他们的代码大都用到了for,很多我看不懂,试了也没有效。
dir /s E:
可以得到以信息:
     所列文件总数:
              98 个文件      7,778,542 字节
               6 个目录 163,000,238,080 可用字节
可不可以用findstr来获取呢?
注意:
1.每个目录会产生一个“个文件”、“字节”;
2.它总是们于倒数第3行(倒数第1行是转行);
3.它总是在“所列文件总数:”行的下1行或“可用字节”的上1行;
根据2和3点,大概可以得到一个目录的大小了。只是又怎样获取这一行文本呢?
这又扯到了文本处理:
能不能把
     所列文件总数:
              98 个文件      7,778,542 字节
合为一行
     所列文件总数:98 个文件      7,778,542 字节
或是直接获取文本的倒数第3行?
或是
2.它总是们于倒数第3行(倒数第1行是转行);
3.它总是在“所列文件总数:”行的下1行或“可用字节”的上1行;


思路我觉得是可行的,但我不知道怎样去做,网上对文本中的换行符处理的BAT又很少,还望各位指点,还有没有其他思路。

  1. @echo off
  2. for /f "tokens=*" %%a in ('dir /s "E:\" ^|find "个文件"') do set "str=%%a"
  3. echo,所列文件总数:%str:,=%
  4. pause
复制代码

TOP

  1. '&cls&@echo off&cscript -nologo -e:vbscript %~fs0 & pause &exit /b
  2. folder = "文件夹路径"
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4. Set f = fso.GetFolder(folder)
  5. s = UCase(folder) & " 大小为 " & f.size & " 字节。"
  6. Wscript.Echo s
复制代码

TOP

回复 3# pcl_test


    这是VBS吗?

TOP

回复 4# 小文

vbs+bat

TOP

返回列表