@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.本处理的功能是查找替换文件名