以下有For 循环嵌套.. 内层循环目的获取指定路径下指定格式文件大小. , 外层循环遍历各个用户文件夹, 代码最后一句 需要统计出 所有用户目录下, 该格式文件的总的大小..
这里需要使用变量延迟才能是的内部循环的文件大小能进行计算.
当外层循环很多次以后, 会超出变量延迟的限制.. 所以不得不加 endlocal
请问, 在这样矛盾的情况下, 如何得出所有用户下指定格式文件的总的大小?- @echo off
-
- set RootFolder=C:\Users
- set SubFolder=AppData\Local\Microsoft\Outlook
-
- for /f "delims=" %%i in ('dir /ad /b C:\users') do (
-
- setlocal enabledelayedexpansion
- set n=&set ds=0
-
- if exist "%RootFolder%\%%i\%SubFolder%\*.ost" (
-
- for /f "delims=" %%j in ('dir /b/s %RootFolder%\%%i\%SubFolder%\*.ost') do (set /a n=!n!+1
- echo %%j %%~zj
- set /a ds=!ds!+%%~zj
- )
-
- echo.
-
- SET /a ds=!ds:~0,-3!/1024
- echo Find !n! Files,Total !ds! MB
-
- echo.
- )
- endlocal
-
- )
-
- echo Summary: Total Find !n! Files,Total !ds! MB
复制代码 当前运行结果:
C:\Users\admin\AppData\Local\Microsoft\Outlook\asdfa.ost 0
Missing operand.
Find 1 Files,Total 0 MB
C:\Users\Administrator\AppData\Local\Microsoft\Outlook\Default O
utlook Profile.ost 251175936
C:\Users\Administrator\AppData\Local\Microsoft\Outlook\sadf.ost 808
Find 2 Files,Total 245 MB
Summary: Total Find !n! Files,Total !ds! MB |