批处理重命名系列案例代码
批处理用于文本/文件的操作确实非常简单有力!不用多么复杂的代码,仅一个记事本加上简洁的代码即可搞定大部分文本/文件的操作,下面记录下我用过的一些代码,基本都是我在百度回答知友的一些代码,既给涧客们参考,也让起到备忘的作用。。。。
案例一、
想把一个文件夹里的全部文件都命名成001,002……这样按顺序,什么顺序无所谓,只要名字都变了就行,谁帮忙写个
我给出的代码:
@echooff setlocalenabledelayedexpansion setvar=1000 for/r"%~dp0"%%iin(*.*)do( set/avar+=1 ifnot"%%~nxi"=="%~nx0"ren"%%i"!var:~-3!%%~xi ) pause>nul echo处理完毕,任意键退出... exit
简单解释:
1.使用for/r遍历当前目录(%~dp0)下所有文件,效率比for/f+dir/s/b高;
2.ifnot语句用于排除bat文件本身,全路径是%0,拓展到bat文件名:%~nx0;
3.利用变量1000开始累加,每次利用!var:~-3!取得后三位,即依次为001、002、003...
Ps:var=1000,那么此脚本最多重命名999个文件,再多将出现覆盖错误,如何修改?请涧客思考,最好能在评论中留下您的代码,呵呵!(比较简单,大虾请勿拍砖!)
案例二、
“比如,我有一个文件夹里的文件都是X1,、X2…X51,我有个的文件名字是X15.ass,用完以后变成[Yousei-raws]SoulEater14[BDrip1280x720x264FLAC].ass代码如下:
@echooff seta=0 setlocalEnableDelayedExpansion for%%nin(*.ass)do( ren"%%n""[Yousei-raws]SoulEater!a![BDrip1280x720x264FLAC].ass" set/Aa+=1 )
如何才能让顺序变正确,顺便说一下,最后一个51变成了1.
我给出的代码:
@echooff seta=100 setlocalEnableDelayedExpansion for/f"delims=*"%%nin('dir/b*.ass')do( set/aa+=1 ren"%%n""[Yousei-raws]SoulEater!a:~-2![BDrip1280x720x264FLAC].ass" )
简单解释:因为a的值,被初始化为0,所以第一个文件就是0,第二个是1,那么第15个就是14了。。。代码调换了下顺序,先给a+1,让重命名时a的值为1即可。
Ps:此处使用for+dir的方式,效率虽然会低一点,但是出错率也降低了,容易懂!当然一样可以用for/r。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。