求一个专用的重命名批处理

2025-01-20 07:05:47
推荐回答(2个)
回答1:

我之前的那个答案由于时间关系还修改得不够好。现在再看看下面这个最新修改的。更具人性化。
@echo off & setlocal EnableDelayedExpansion
title 文件批量重命名整理
mode con cols=60 lines=10 & color 9b&set list=%random%
echo.&echo.
echo 此批处理脚本用于将此路径下的所有同类文件批量重命名
echo.
set /p start=开始整理文件请输入[Y]:
if not "%start%"=="y" if not "%start%"=="Y" exit
echo.
set /p bak=请输入要整理的文件名后缀[如jpg]:
echo.
set /p name=请输入更改后的文件名称(直接回车则按从01开始的有序数字命名):
for /f "delims=" %%i in ('dir /b *.!bak!') do (
set /a num+=1
if not "%%~nxi"=="%~nx0" (
if !num! LSS 10 (ren "%%~nxi" !name!0!num!.!bak!&echo %%~xni 已重命名为: !name!0!num!.!bak! >>%temp%\%list%) else ren "%%~nxi" !name!!num!.!bak!&echo %%~xni 已重命名为: !name!!num!.!bak! >>%temp%\%list%
)else set /a num-=1
)
set /a no=!num!+2
mode con cols=60 lines=!no!&color 5a
echo !num!个文件已经完成重命名,分别为:
type %temp%\%list%
set /p type=要导出该清单列表请输入[Y],否则直接回车键退出。
if not "%type%"=="y" if not "%type%"=="Y" exit
copy %temp%\%list% 重命名列表清单.txt&del /q %temp%\%list%&exit

回答2:

感觉你这个不太简洁,我写的如下,只达到你要的功能就好了,没有深入做界面美化和功能扩展(如显示修改文件的数量)上的工作,如果确实需要这些功能,加上问题补充,我抽空给你弄出来。

@echo off
set /p a=请输入想要批量修改成的扩展名:
for /f %%i in ('dir /b') do (
if %%i neq %~nx0 (
for /l %%k in (1,1,256) do ren "%%i" "%%k.%a%">nul 2>nul
)
)
echo MyVar=MsgBox("文件名批量修改完成!已经全部修改为%a%格式", 15, "任务完成!")>%temp%\end.vbs
%temp%\end.vbs
del /f /q %temp%\end.vbs