|
|
发表于 2024-7-14 16:36:01
|
显示全部楼层
本帖最后由 aloha20200628 于 2024-7-14 19:02 编辑
回复 1# walkercolin
当文件尺寸(字节单位)z 值(或其总和)超过批处整数上限2147483647(2GB) 后,set/a z+=%%~zF 就会出错。
楼主的实况若越过此红线,可改用以下代码,其中文件尺寸的累加是调用powershell功能完成,亦可从本坛第三方下载gawk.exe替换powershell完成,其速度明显快于前者(须抹去代码第11行头 REM 关键词,再删除代码第10行即可)... 利用临时文件z.tmp是为提高整体效率,当文件数量较多时其效果明显...
- @echo off &set "zF=%cd%\z.tmp" &setlocal enabledelayedexpansion
- for /d %%a in (*) do (
- set/a "p=v=z=0"
- pushd "%%a"
- ( for %%b in (*.jpg *.png *.bmp) do (
- echo,%%~zb
- if not "%%~nb"=="000" if not "%%~nb"=="00.1" if not "%%~nb"=="00.2" if not "%%~nb"=="00.3" set/a p+=1)
- for %%c in (*.mp4 *.avi *.mov *.mkv) do (set/a "v+=1"&echo,%%~zc)
- )>"%zF%"
- for /f %%z in (' powershell "$z=0;gc '%zF%'|foreach{$z+=$_};[math]::round($z/1mb)" ') do set "z=%%z"
- REM for /f %%z in (' gawk "{z+=$1;print int(z/1024/1024)}" "%zF%" ') do set "z=%%z"
- popd
- ren "%%a" "%%a [!p!P!v!V-!z!M]"
- )
- del/q "%zF%"&endlocal&pause&exit/b
复制代码 |
|