windows - 批处理 - 特定文件夹的文件大小(以 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 系统上运行。
解决方案
我尝试使用嵌入式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 中。
推荐阅读
- elasticsearch - 查找所有数组字段值与谓词匹配的文档
- javascript - addeventListener 的问题
- redis - 更改目录后无法启动redis服务器
- excel - Excel条件格式输入后将填充颜色更改为正常
- r - R:不平衡面板,为独特的观察创建假人
- django - 如何通过多个 http 请求打开会话以保留登录凭据?
- postgresql - 如何从 Postgres 的列中删除不间断的空格
- sql - 使用带有动态参数的过程选择 INTO 动态临时表
- python - 是否有替代 `difflib.get_close_matches()` 的替代方法,它返回索引(列表位置)而不是 str 列表?
- python - 同一列联表的 sklearn 和 scipy.stats 中的不同 chi2 值