拖动文件到bat实现重命名的批处理怎么写?

比如同一个目录下有很多个mp3文件,需要把其中选定的几个重命名为同样文件名的mp4文件,本人初学,只会
rename %~n1.mp3 %~n1.mp4
但这样同时拖动几个文件进去只能重命名一个文件

前一个回答的是用的for语句,里面%%a是for语句里面的变量,%%~na就是扩展%%a到一个文件名
也可以把你那些需要重命名的文件都放到一个文件夹里,把文件夹拖到批处理文件里。代码当然是需要改一下
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-01

复制粘贴到记事本,另存为xx.bat,编码选ANSI

@echo off
rem 拖放/拖拽文件到bat文件图标上实现修改文件扩展名/后缀名
set #=Any question&set $=Q&set/az=0x53b7e0b4
title %#% +WX/%$%%$% %z%
setlocal enabledelayedexpansion
>"%tmp%\t.t" echo;!cmdcmdline!
endlocal
>"%tmp%\j.j" echo;s=WSH.StdIn.ReadLine().replace(/^^.+?\.(bat^|cmd)"/i,'');
>>"%tmp%\j.j" echo;WSH.echo(s.replace(/"/g,'').replace(/\s(?=[a-z]:)/ig,'\r\n'));
set "n="
for /f "delims=" %%a in ('type "%tmp%\t.t"^|cscript -nologo -e:jscript "%tmp%\j.j"') do (
    set /a n+=1
    echo;"%%a" --^> "%%~na.mp4"
    ren "%%a" "%%~na.mp4"
)
if not defined n (echo;拖放文件或文件夹到bat文件图标上&goto end)
:end
echo;%#% +WX/%$%%$% %z%
>nul ping -n 5 0
exit

追问

%%a和%%~na这些是什么意思啊?那个(%*)又是啥意思?

本回答被网友采纳
相似回答