【发布时间】:2021-09-08 08:35:18
【问题描述】:
我正在尝试制作一个批处理脚本,以 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 系统上运行。
【问题讨论】:
-
for /r %%x in (folder directory\*) do应为for /R "folder directory" %%x in (*) do。要克服 2 GiB 的限制,您必须借用另一种语言(例如 javascript、vbscript)…… -
@aschipfl 可以,但如何将其转换为 GB?
-
好吧,如果你说的是 SI 前缀 Giga,意思是 1000 * 1000 * 1000,你可以删除文件大小的最后 9 位小数,导致 GB 值向下舍入 (如果您提前检查删除的 9 个数字,您可以进行不同类型的舍入);如果你说的是二进制前缀 Gibi,意思是 1024 * 1024 * 1024,那么批处理几乎不可能......
-
Windows 2000 在 10 多年前就已终止支持。甚至没有安全更新。 cloudblogs.microsoft.com/windowsserver/2010/01/14/…
标签: windows batch-file cmd filesize