使用CMD计算目录中文档的大小

时间:2017-10-18 06:33:05

标签: file cmd count directory size

我有一个名为文件的目录,它有.doc,.xlsx,.pdf,.htm等文件和其他目录。

我想使用CMD计算此目录中任何类型文档的大小。

例如:我需要计算.html文档的数量及其总大小。

Dir命令显示文件总数及其大小。

2 个答案:

答案 0 :(得分:0)

在第一个for循环中获取所有可用的扩展程序 使用第二个for循环遍历每个找到的扩展名 使用第三个(嵌套)for循环获取文件数和累积大小:

@echo off
setlocal &REM enabledelayedexpansion
for %%a in (*) do (
  set "ext_%%~xa=*%%~xa"
)
for /f "tokens=2 delims==" %%a in ('set ext_') do (
  for /f "tokens=1,3" %%b in ('dir /-c %%a^|findstr /e "Bytes"') do echo %%a:  Files:%%b  Size: %%c
)

注意:您可能必须根据您的语言调整“tokens = 1,3”和"Bytes"字符串。在我的(德语)窗口上,dir /a-d /-c的摘要如下所示:

          15 Datei(en),         42291 Bytes               <<< this is the needed line
           0 Verzeichnis(se), 358679015424 Bytes frei

(注意:dir /-c删除了“千位分隔符”,在某些语言中为点.,在其他语言中为逗号,

答案 1 :(得分:0)

以下是两个示例,您只需编辑/确认第2行的文件路径

第一个使用Dir并尝试根据您的问题找到所需的行:

@Echo Off
Set "SrcDir=%UserProfile%\Documents"

If "%~1"=="" (Set "_=%SrcDir%\*.*") Else Set "_=%SrcDir%\*.%~1"
If Not Exist "%_%" (Echo %_%    No matches&GoTo EndIt)

Set "$="
For /F "Tokens=*" %%A In ('Dir/D/-C "%_%"^|FindStr/BC:"  "'
) Do If Not Defined $ Set "$=%_%    %%A"
Echo(%$%

:EndIt
Timeout -1

第二种方法使用PowerShell,它可以让您更好地控制文件大小单位(我已经使用过KB)

@Echo Off
Set "SrcDir=%UserProfile%\Documents"

If "%~1"=="" (Set "_=%SrcDir%\*.*") Else Set "_=%SrcDir%\*.%~1"
If Not Exist "%_%" (Echo %_%    No matches&GoTo EndIt)

Powershell -C "$n=(GCI '%_%'|Measure).Count;"^
 "$s=[Math]::Round((GCI '%_%'|Measure -S Length).Sum/1kB,2);"^
 "Write-Host '%_%   ' $n 'file(s) totalling' $s'kB'"

:EndIt
Timeout -1

或者:

  • 双击它 - all
  • 中的总%SrcDir%个文件

或者:

  • 通过命令行:
    • scriptName.cmd - all
    • 中的%SrcDir%个文件总数
    • scriptName.cmd xlsx - .xlsx
    • 中的%SrcDir%个文件总数

注意:在5行和9行上紧跟%_%之后的空格是单个标签