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