|
|
- @echo off
- rem 保存为ansi编码
- cd /d "%~dp0"
- rem 排除特定文件(000,00.1,00.2,00.3,00.4),不需要可以删除下一行
- set "_f=^|findstr /rvix /c:"00\.[123]\.[jpb][pnm][gp]" /c:"000\.[jpb][pnm][gp]""
- (for /f "delims=" %%d in ('dir /b /ad') do (
- setlocal
- pushd "%%d"
- if not errorlevel 1 (
- for /f %%a in ('dir /b /a-d *.jpg *.jpeg *.heic *.png *.bmp *.gif %_f% ^|find /c /v ""') do (
- set /a "1/%%a" && set P=%%aP
- )
- for /f %%a in ('dir /b /a-d *.mp4 *.avi *.mov *.mkv ^|find /c /v ""') do (
- set /a "1/%%a" && set V=%%aV
- )
- set m=1048576
- for /f "eol=0tokens=3" %%j in ('dir /s /a-d /-c *.jpg *.jpeg *.heic *.png *.bmp *.gif *.mp4 *.avi *.mov *.mkv 2^>nul^| findstr /i "个文件.*字节$"') do (
- set size=%%j00
- setlocal enabledelayedexpansion
- if !size! geq 102400 (
- if !size! geq 104857600 (
- set s=MB
- set t=!size!
- set len=!t:~9!098765432100
- set /alen=9+!len:~10,1!
- set/a "r=!t:~,8!%%m,size=!t:~,8!/m"
- for /l %%j in (9 1 !len!) do (
- set/a "q=!r!!t:~%%j,1!/m,r=!r!!t:~%%j,1!%%m"
- set "size=!size!!q!"
- )
- if !size! geq 102400 set s=GB&set /asize/=1024
- ) else set s=KB&set /asize/=1024
- ) else set s=Byte
- for /f "tokens=1-3" %%a in ("!size:~,-2! !size:~-2! !s!") do (
- endlocal
- set Z=%%a.%%b%%c
- )
- )
- popd
- if defined Z (
- call ren "%%d" "%%d [%%p%%%%V%%-%%Z%%]"
- )
- )
- endlocal
- )) 2>nul
- pause
复制代码 上面这段bat代码的功能是批量遍历当前目录下的所有子文件夹,为每个子文件夹重命名,添加图片数量、视频数量以及总文件大小的标记,但是我发现如果一个文件夹包含诸如❤️🐾表情符号时,重命名就会失效,想知道问题在哪儿,以及如何解决,拜托各位大佬了 |
|