Board logo

标题: [系统相关] [已解决]批处理用不同的方法获取文件(夹)的大小 [打印本页]

作者: 小文    时间: 2015-4-15 13:04     标题: [已解决]批处理用不同的方法获取文件(夹)的大小

本帖最后由 小文 于 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又很少,还望各位指点,还有没有其他思路。
作者: pcl_test    时间: 2015-4-15 14:08

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

作者: pcl_test    时间: 2015-4-15 14:56

  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
复制代码

作者: 小文    时间: 2015-4-16 22:46

回复 3# pcl_test


    这是VBS吗?
作者: pcl_test    时间: 2015-4-16 22:56

回复 4# 小文

vbs+bat




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2