[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 went 于 2020-5-28 11:29 编辑

for /r /d 参数的作用来了
dir是主文件夹,max是最大字节数
如果要递归处理子文件夹,使用第5行,把第6行REM起来
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "dir=D:\Notepad++"
  4. set "max=5242880"
  5. REM for /r "%dir%" /d %%i in ("*") do call :getFolderSize "%%i"
  6. for /d %%i in ("%dir%\*") do call :getFolderSize "%%i"
  7. pause&exit
  8. :getFolderSize
  9. set "size=0"
  10. for /r "%~1" %%i in ("*") do ( set /a "size+=%%~zi" & if !size! gtr %max% goto :eof )
  11. if !size! leq 1024 ( echo !size!B %~1 & goto :eof )
  12. if !size! leq 1048576 ( set /a "size/=1024" & echo !size!KB %~1 & goto :eof )
  13. set /a "size=!size!/1024/1024" & echo !size!MB %~1 & goto :eof )
复制代码

TOP

回复 4# itunesis
set "dir=%~dp0"即可
生成dirList.txt,两位小数
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "dir=%~dp0"
  4. set "max=5242880"
  5. (
  6. REM for /r "%dir%" /d %%i in ("*") do call :getFolderSize "%%i"
  7. for /d %%i in ("%dir%*") do call :getFolderSize "%%i"
  8. )>"%~dp0dirList.txt"
  9. type "%~dp0dirList.txt"
  10. echo ----------------------
  11. echo out file: %~dp0dirList.txt
  12. echo ----------------------
  13. pause&exit
  14. :getFolderSize
  15. set "size=0"
  16. for /r "%~1" %%i in ("*") do ( set /a "size+=%%~zi" & if !size! gtr %max% goto :eof )
  17. if !size! leq 1024 ( set "unit=B" & goto :show )
  18. if !size! leq 1048576 ( set "unit=KB" & set /a "size=!size!*100/1024" & set "size=!size:~0,-2!.!size:~-2!" & goto :show )
  19. set "unit=MB" & set /a "size=!size!*100/1024/1024" & set "size=!size:~0,-2!.!size:~-2!"
  20. :show
  21. set "size=%size%%unit%          "
  22. echo %size:~0,10% %~1
复制代码

TOP

看你意思是不用处理子文件夹
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "dir=%~dp0"
  4. set "max=5242880"
  5. ( for /d %%i in ("%dir%\*") do call :getFolderSize "%%i" )>"%~dp0dirList.txt"
  6. type "%~dp0dirList.txt"
  7. echo ----------------------
  8. echo out file: %~dp0dirList.txt
  9. echo ----------------------
  10. pause&exit
  11. :getFolderSize
  12. set "size=0"
  13. for /r "%~1" %%i in ("*") do ( set /a "size+=%%~zi" & if !size! gtr %max% goto :eof )
  14. echo %~nx1
复制代码

TOP

返回列表