@echo off ::请输入老名字:
set /p oldname=
::请输入新名字:
set /p newname= for /f "usebackq delims=" %%i in (`dir /s/b/a-d`)
do ( setlocal enabledelayedexpansion set var=%%~nxi set "var=!var:%oldname%=%newname%!" echo %%i |find "ren.bat" >nul ||ren "%%i" "!var!" >nul 2>nul endlocal )
pause
说明 :
1.在for语句中使用到了变量延迟的语句 setlocal enabledelayedexpansion 和 endlocal。
2.dir /s/b/a-d是列出当前目录及其子目录(/s)的文件(/a-d)的名称(/b),/a-d是指文件属性非目录,即文件。
3.'|'是用来传递参数的管道,'||'则是当前面的句子执行失败后才能执行的。
4.>nul,成功的不提示,2>nul 失败了不提示。
5.ren.bat为本批处理的文件名,不会修改的。
6.本处理的功能是查找替换文件名