@echo off
set num=0
set savefile=恢复改名
if  {%1}=={}  goto :useageexit
if  {%2}=={}  goto :useageexit
if  {%3}=={}  goto :useageexit
if exist %savefile%.bat (
attrib %savefile%.bat -h -s -r
)
echo @echo off >%savefile%.bat
for /R %3 %%v IN (%1.%2) DO (
call:rn %%v %2
)
echo 已经执行完改名!
echo echo 恢复完毕!>>%savefile%.bat
echo del %savefile%.bat >>%savefile%.bat
echo pause >>%savefile%.bat
goto :EOF
:useageexit
echo  ●   站好了听      ●           
echo  █┳ 我给你说使  ┗█┛        
echo ┏┓  用方法!      ┛┗  
echo ----------------------------------------------------------    
echo 本程序由小朱制造
echo ----------------------------------------------------------    
echo 使用方法: %~n0 文件名 扩展名 路径
echo ----------------------------------------------------------    
echo 功能:
echo     本程序将指定类型的文件批量改名为以数字递增表示的文件名;
echo 参数说明:
echo ----------------------------------------------------------    
pause
echo 文件名: 
echo     指不包括扩展名的纯文件名,可以使用通配符('*','?');
echo 扩展名: 
echo     就是扩展名了啊,不要加点('.'),也可以使用通配符号('*','?');
echo 路径: 
echo     就是路径,当用点(.)的时候表示当前路径(程序所在路径);
echo 注意:
echo     指定一个路径后,此路径下以及它的所有子路径下的所有符合的文件都会被改名;
echo ----------------------------------------------------------    
echo 例子:
echo     如你要将整个D:盘'a'开头的jpg文件都改名
echo     %~n0 a* jpg D:\
echo     如你要将当前目录及其下级所有目录中的所有jpg文件都改名
echo     %~n0 * jpg .
echo ----------------------------------------------------------    
echo 恢复:
echo     每运行一次后,我都会在你指定的最高路径下建立一个可以恢复改名的".bat"文件
echo     命名为"%savefile%.bat",当然如果目录已经有这样一个文件,我会覆盖它
echo     然后你只要双击运行"%savefile%.bat"(或直接在Dos窗口运行它)就可以把最近一次改
echo     名操作恢复;
echo ----------------------------------------------------------    
pause 
echo     最后,可能是dos本身的问题,当文件名中包含空格的时候,dos好象会出错,只取空格前的
echo     部分为文件名,哎,当初纯dos下可没有带空格的文件的呀!
goto :EOF
:rn
set /a num+=1
if exist %~p1%num%.%2 goto :rn
ren %1 %num%.%2
echo ren %~dp1%num%.%2 %~nx1 >>%savefile%.bat
 
 
没有评论:
发表评论