标题: [文件操作] [已解决]批处理怎样统计目录下所有文件夹的大小? [打印本页]
作者: sun-spot 时间: 2009-7-28 12:24 标题: [已解决]批处理怎样统计目录下所有文件夹的大小?
比如一个目录下全是文件夹,怎样能统计出这些文件夹的大小,并输出文本,以文件夹名称和大小为一行。
能够实现吗?诚心请教!
[ 本帖最后由 sun-spot 于 2009-7-29 09:23 编辑 ]
作者: Lumiere 时间: 2009-7-28 14:12
包括子目录么?服了,非得要字数达标
作者: sun-spot 时间: 2009-7-28 14:59
不包括子目录
以前学过批处理,学的不深,现在快忘光了
作者: sun-spot 时间: 2009-7-28 17:35
顶起,来人解答啊……
作者: netbenton 时间: 2009-7-28 18:58
1、根据 dir 命令的结果获取文件夹大小- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- for /f "delims=" %%a in ('dir /b /ad') do (
- for /f "tokens=2 delims=件字" %%b in ('dir /s "%%a" ^| findstr "个文件"') do (
- set "FolderSize=%%b"
- )
- echo %%a: !FolderSize!
- )
- pause
复制代码
2、BAT调用 Windows Sysinternals 工具包里面的 du 命令获取文件夹大小
https://docs.microsoft.com/zh-cn/sysinternals/downloads/du- @echo off
- cd /d "%~dp0"
- for /f "delims=" %%a in ('dir /b /ad') do (
- for /f "tokens=2 delims=:" %%b in ('du -q "%%a" 2^>^&1 ^| findstr "Size:"') do (
- echo %%a: %%b
- )
- )
- pause
复制代码
3、BAT调用PowerShell获取文件夹大小- @echo off
- REM setlocal enabledelayedexpansion
- cd /d "%~dp0"
- for /f "delims=" %%a in ('dir /b /ad') do (
- set /p =%%a: <nul
- powershell -c "(Get-ChildItem -Path '%%a' -Force -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum"
- )
- pause
复制代码
4、批处理统计目录下所有文件夹的大小并把结果转换成KB、MB、GB
http://bbs.bathome.net/thread-31593-1-1.html#pid153139
5、VBS统计文件夹的大小并把结果转换成KB、MB、GB
http://bbs.bathome.net/thread-13307-1-1.html
作者: sun-spot 时间: 2009-7-29 09:22
谢谢5楼,竟然在DOS联盟也回了这帖
作者: slovent 时间: 2009-7-29 11:19
该代码有个bug,就是如果批处理所在目录下的文件夹中有空文件夹,会取他上一个的文件夹的大小,而不是0,很怪异。
作者: slovent 时间: 2009-7-29 13:27
用dir/s/a-d查询空目录,返回结果为“找不到文件”,所以for赋值的时候就有问题了:(
去掉了-d参数就正常了
作者: sun-spot 时间: 2009-7-30 08:59
是这样的,谢谢各位了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |