批量更改文件名.bat

  • 内容
  • 评论
  • 相关

把以下的代码复制下来保存成.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格式,如果还不行,改完后将乱码删除,对照本文重新修改。有许多延时的地方可能不需要,当时为了练习函数的使用添加进去的,大家可以根据需要进行修改,如果有更好的改进地方,请在评论里给我留言,谢谢大家的支持,共同进步。这里暂时不提供下载链接