把以下的代码复制下来保存成.bat文件,放在你要修改的文件目录下。保存的时候注意文字的编码格式(UTF-8),可能会出现中文乱码的情况。
@echo off cls title 批量更改文件名(后缀名相同的文件) color 1a echo. echo. echo ------------------将此批处理放在所要更改的文件名的同一目录下----------------- echo. echo. echo 确定,请按任意键继续... pause >nul cls color 1a title 批量更改文件名(后缀名相同的文件) :start echo. echo. echo ------------------统计所要更改的文件数目(后缀名相同的文件)----------------- @echo off echo. echo. set k= set /p k= 输入你要更改的文件的后缀名(如tmp.txt 输入txt): cd %~dp0 if "%k%"=="" echo. & echo. & echo -------------------------输入为空,请重新输入---------------------- & echo. & echo. & echo 按任意键返回,重新输入 & pause >nul & cls & goto start if "%k%"==" " echo. & echo. & echo -------------------------输入为空,请重新输入---------------------- & echo. & echo. & echo 按任意键返回,重新输入 & pause >nul & cls & goto start echo. if not exist *.%k% echo. & echo. & echo -------------------没有找到你要更名的文件格式,请重新输入---------------- & echo. & echo. & echo 按任意键返回,重新输入 & pause >nul & cls & goto start echo. echo. set num= set num.= dir /b /a-d /o:n *.%k% >src.txt for /f "delims=" %%i in ('dir /a-d /b *.%k% 2^>nul') do ( set /a num%%~xi+=1 ) for /f "tokens=2,3 delims==." %%i in ('set num.') do ( cls & echo. & echo %%i 格式文件共有 %%j 个 & echo. & echo 需输入%%j个更改后的文件名 & echo (包括后缀名) & echo. & echo 注意:共需输入%%j个更改后的文件名 >tmp2.txt & echo. echo ^">dot.txt for /f "delims=" %%m in (dot.txt) do (for /f "delims=" %%n in (src.txt) do echo %%m%%n%%m>>tmp3.txt) ) pause echo. echo. echo ----------------------------正在获取文件相关信息--------------------------- ping 127.1 -n 2 >nul echo. echo. echo 已获取文件信息,正在进行相关操作 ping 127.1 -n 2 >nul echo. echo 后面将自动打开生成的tmp3.txt文件,查看获取文件名的初始信息 echo. ping 127.1 -n 2 >nul echo -----------请将打开后的tmp3.txt文件拖到一旁,以免遮住后续操作----------------- echo. ping 127.1 -n 2 >nul echo 按任意键继续... pause >nul echo. echo -----------------------正在打开,请稍候....------------------------------------ ping 127.1 -n 3 >nul start tmp3.txt ping 127.1 -n 4 >nul if errorlevel==0 goto next echo. :next cls title 批量更改文件名(后缀名相同的文件) echo. echo. echo ------------------进入下一步打开记事本,----------------------------- echo. echo 根据提示,在里面输入你更改后的文件名,注意格式 echo. echo 请根据文本文档中的内容进行操作 echo. echo -------------------按任意键打开记事本-------------------------------- pause >nul echo. echo 正在打开,请稍候.... echo 1.txt>tmp.txt echo 2.txt>>tmp.txt echo 3.txt >>tmp.txt echo ---------------------------------------------------------------->>tmp.txt echo 对比下刚才打开的tmp3.txt文本文档中的内容>>tmp.txt echo 按照上面格式输入你更改后的文件名(一行输入一个文件名,包括后缀名)>>tmp.txt echo 如果重命名后的文件有空格请用双引号把它括起来如”a b.txt”>>tmp.txt echo ---------------------------------------------------------------->>tmp.txt echo 注意更改前与更改后的文件名一一对应>>tmp.txt echo ---------------------------------------------------------------->>tmp.txt type tmp2.txt >>tmp.txt echo ---------------------------------------------------------------->>tmp.txt echo ---------------------------------------------------------------->>tmp.txt echo 编辑结束后请保存退出(tmp3.txt中请勿动),将自动进入下一步>>tmp.txt echo ---------------------------------------------------------------->>tmp.txt echo 首先清除本文本(tmp.txt)中所有内容,>>tmp.txt ping 127.1 -n 2 >nul echo. echo 已打开记事本,请编辑记事本,勿按任意键 start /wait tmp.txt cls title 批量更改文件名(后缀名相同的文件) echo. echo. echo 请关闭所有的文本文档(*.txt),需保存的先保存后再关闭,以免影响后面操作 echo. echo. echo 确定都已关闭,按任意键继续... pause >nul ping 127.1 -n 2 >nul cls title 批量更改文件名(后缀名相同的文件) echo. echo. echo ------------------------------正在进行更名,请稍候...------------------------ ping 127.1 -n 4 >nul for /f "delims=" %%o in (tmp3.txt) do ( for /f "delims=" %%p in (tmp.txt) do (rename %%o %%p) ) cls title 批量更改文件名(后缀名相同的文件) color 1a echo. echo. echo ----------------------操作成功!按任意键结束并删除临时文件------------------ pause >nul @del /f /q /s tmp.txt>nul 2>nul @del /f /q /s tmp3.txt>nul 2>nul @del /f /q /s tmp2.txt>nul 2>nul @del /f /q /s dot.txt>nul 2>nul @del /f /q /s src.txt>nul 2>nul goto exit :end echo. echo. echo 抱歉,因技术原因无法返回参数,将自动退出,请重新打开 ping 127.1 -n 6 >nul :exit exit
保存成bat文件,放到要批量更改文件名的文件所在文件夹,如果发现复制的中文发生乱码,可以用EditPlus等代码编辑工具,将编码改成UTF-8格式,如果还不行,改完后将乱码删除,对照本文重新修改。有许多延时的地方可能不需要,当时为了练习函数的使用添加进去的,大家可以根据需要进行修改,如果有更好的改进地方,请在评论里给我留言,谢谢大家的支持,共同进步。这里暂时不提供下载链接