首页 > 解决方案 > 批处理 - 特定文件夹的文件大小(以 GB 为单位)的脚本

问题描述

我正在尝试制作一个批处理脚本,以 GB 为单位计算特定文件夹的文件大小。该文件夹可以超过 2GB。我试过这个:

@echo off
set size=0
for /r %%x in (folder directory\*) do set /a size+=%%~zx
echo %size% GigaBytes
pause

但这总是返回零并且限制为 2GiB。

然后我尝试了这个:

@For /F "tokens=*" %%a IN ('"dir %1 /s /-c | find "bytes" | find /v "free""') do @Set summaryout=%%a
@For /f "tokens=1,2 delims=)" %%a in ("%summaryout%") do @set filesout=%%a&set sizeout=%%b
@Set sizeout=%sizeout:bytes=%
@Set sizeout=%sizeout: =%
@Echo Size is :%sizeout%
pause

但我不知道如何定义目录以及如何以 GB 为单位设置测量单位。

PowerShell 也不是一个选项,因为它必须在没有它的 W2k 系统上运行。

标签: windowsbatch-filecmdfilesize

解决方案


我尝试使用嵌入式mshta.exe实用程序简化 WSH 的使用。所以我得到了这个代码:

set "folder=C:\\Folder directory"
@for /f "usebackq " %%a in (`mshta "javascript:var size=new ActiveXObject('Scripting.FileSystemObject').GetFolder('%folder%').Size ; new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(size/1073741824);close()"`) do @echo %%a

PS 文件夹路径变量必须有双斜杠(或反斜杠)。1GB 大小等于1073741824字节。

PSS 该实用​​程序已在 W2K SP4 中。


推荐阅读