批量更改文件名的批处理文件

最近下了不少动画,不过文件名都太长,一般都是 [字幕组][名称][集数][语言][分辨率][编码].后缀 这样的格式
我喜欢简单的名字,比如 01.rmvb 之类,可是手动改很麻烦,于是就写了这个 bat,希望对大家有帮助

2009-10-16:
      * 修正了更改文件名部分

      + 增加了几个取得名称的方法,在REM注释节


批量重命名的bat代码,其中REM为注释节,!var! 为变量调用


@echo off
SetLocal EnableDelayedExpansion

REM 要查找的文件
set ext=*.rm,*.rmvb,*.avi,*.mkv,*.torrent

REM 新文件名在原文件名中的起始位置,从0开始
set pstart=23

REM 新文件名在原文件名中的长度
set length=2

REM 遍历文件,并截取编号作为新文件名
for /r %%a in (!ext!) do (

REM 文件名
set fn=%%~na

REM 后缀
set en=%%~xa

REM 取 pstart 位置之后的所有字符 !fn:~%pstart%!!en!
REM
 取文件名最后 length 长度字符 !fn:~-%length%!!en!
REM
 取文件名 pstart 开始的 length 长度字符 !fn:~%pstart%,%length%!!en!

REM 显示新文件名
echo !fn:~%pstart%,%length%!!en!

REM 修改文件名
rename "%%a" "!fn:~%pstart%,%length%!!en!"
)

pause


新建个 bat,将以上代码复制至其中即可运行,参数可适当修改


自己修改后的批处理,只能执行一次,批量文件重命名的功能。

@echo off  

rem 如果存在了运行记录日志则不在运行批处理
if exist "%cd%\binLog.txt" (goto end)

rem 获取当前日期
for /f %%i in ('date /T') do (set date=%%i)

rem 写入日志文件
date /T > %cd%\binLog.txt

SetLocal EnableDelayedExpansion

REM 要查找的文件类型
set ext=*.bin

REM 遍历文件,并截取编号作为新文件名
for /r %%a in (!ext!) do (

REM 文件名
set fn=%%~na

REM 后缀
set en=%%~xa

REM 把字符串的最后4个字符赋值给变量hou
set hou=!fn:~-7!

REM 截取第一个到倒数第10个字符:
set newchar=!fn:~0,-10!

echo !newchar!!hou!!en!

REM 修改文件名
rename "%%a" "!newchar!!hou!!en!"
)
pause
exit

:end
@echo 已经批量修改过bin文件名称,无需再次修改,否则将会导致所有正确的文件名基础上进行错误修改,并且不可逆!!
pause


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值