Board logo

标题: [文件操作] 批处理BAT如何提取文件大小? [打印本页]

作者: wang5185244    时间: 2014-5-13 22:57     标题: 批处理BAT如何提取文件大小?

某目录下存在很多名称不相同的文件,但是相同名称存在不同格式;
例如:
123456.txt
123456.doc
123456.xls
654321.txt
654321.doc
654321.doc
……
现在提取相同名称文件的大小:123456.*的文件大小654321.*的文件大小……求各位大神指导
作者: terse    时间: 2014-5-13 23:27

FOR   %%~zi  扩张到文件大小
作者: CrLf    时间: 2014-5-13 23:53

系统默认就是按文件名排序的,所以...
  1. for %%a in (*) do echo %%a 大小为: %%~za
复制代码
如果非要按一组一组显示,可以这样:
  1. @echo off
  2. for %%a in (*.txt) do (
  3.    echo %%~na.*------------
  4.    for %%b in ("%%~na.*") do echo %%~xb 大小为:%%~zb
  5. )
  6. pause
复制代码

作者: wang5185244    时间: 2014-5-14 09:04

回复 3# CrLf 我想将名字相同格式不同的大小去和,在这基础上怎么改,谢谢
作者: wang5185244    时间: 2014-5-14 09:06

回复 3# CrLf 文件名相同格式不同文件大小求和
作者: wang5185244    时间: 2014-5-14 09:40

回复 3# CrLf 这提取文件大小单位是什么?字节?
作者: wang5185244    时间: 2014-5-14 11:09

回复 3# CrLf 怎么输出到文本
作者: Batcher    时间: 2014-5-14 13:17

回复 7# wang5185244


输出重定向
http://bbs.bathome.net/thread-2516-1-1.html
作者: apang    时间: 2014-5-14 13:31

本帖最后由 apang 于 2014-5-14 13:35 编辑

保存为test.vbs,更改第一行路径为实际路径
  1. path = "d:\Test"
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Set dic = CreateObject("Scripting.Dictionary")
  4. For Each f in fso.GetFolder(path).Files
  5.     strName = LCase(fso.GetBaseName(f))
  6.     If dic.Exists(strName) Then
  7.         dic.Item(strName) = dic.Item(strName) + f.Size
  8.     Else
  9.         dic.Add strName, f.Size
  10.     End If
  11. Next
  12. For Each a in dic.Keys
  13.     s = s & a & ".*" & vbTab & dic.Item(a) & " Byte" & vbCrLf
  14. Next
  15. fso.CreateTextFile("Result.txt", true).Write s
  16. CreateObject("WScript.Shell").Run "NotePad Result.txt"
复制代码

作者: wang5185244    时间: 2014-5-19 18:52

回复 9# apang


    如果是其他格式呢?




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