本帖最后由 aloha20200628 于 2024-5-22 20:01 编辑
回复 3# crownking1983
好吧,再给一个剔除中文字段的版本,无论其前后有无空格...
- @echo off &setlocal enabledelayedexpansion
- for /f "delims=" %%F in (' dir /b/a-d "* * [*].*" ') do (
- (call :_cutHZ "%%~nF" cF)
- ren "%%F" "!cF!%%~xF"
- )
- endlocal&pause&exit/b
- :_cutHZ //REM 剔除文件名中包含的全部中文字符 限定文件名最大长度=260
- set "$s=%~1"&set "_s="
- for /L %%n in (0 1 260) do (
- set "c=!$s:~%%n,1!" &if "!c!"=="" set "%~2=!_s!" &exit/b
- if "!c!" leq "Z" set "_s=!_s!!c!"
- )
- exit/b
复制代码
如果不约束文件名格式,只须剔除其中的中文字段,则可改变以上代码第2行如下
- for /f "delims=" %%F in (' dir /b/a-d "*.*" ') do (
复制代码
|