我上面的-a只是一个例子,有可能是任何字符的,您的方法估计可以实现,但能否更加通用?比如,我自己去定义要删除或要替换的字符,定义一个参数:原字符,再定义一个参数:新字符,如果为空就是相当于删除了…
追答@echo off&SetLocal EnableDelayedExpansion
set /p old=输入原字符:
Set /p new=输入新字符:
For /f "delims=" %%i in ('dir /b') do (
Set a=%%i
Set b=!a:%old%=%new%!
ren "!a!" "!b!" )
pause
很好,很强大!要是对子目录呢?
追答@echo off&SetLocal EnableDelayedExpansion
set /p old=输入原字符:
Set /p new=输入新字符:
::先处理文件
For /f "delims=" %%i in ('dir /s /b /a-d') do (
Set a=%%~nxi
Set b=!a:%old%=%new%!
ren "%%i" "!b!" )
::再处理文件夹
For /f "delims=" %%i in ('dir /s /b /ad^|sort /+10000') do (
Set a=%%~ni
Set b=!a:%old%=%new%!
ren "%%i" "!b!" )
pause
授人以鱼,我想要渔!要是我会了,就不用再问:先处理一个目录下所有子目录里的文件,然后再处理所有子目录…您回答很好!结贴!…