[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 6# xinjinjie


@echo off
for %%a in ("*GRANBLUE FANTASY*.mkv") do (
    for /f "tokens=1,2 delims=[]" %%b in ("%%~na") do (
        ren "%%~a" "%%b_%%c%%~xa"
        ren "%%~na.ass" "%%b_%%c.ass"
    )
)
pause

TOP

回复 9# xinjinjie


@echo off
for %%a in ("*GRANBLUE FANTASY*.mkv") do (
    for /f "tokens=1,2 delims=[]" %%b in ("%%~na") do (
        echo ren "%%~a" "%%b_%%c%%~xa"
        echo ren "%%~na.ass" "%%b_%%c.ass"
    )
)
pause
用 echo 命令观察一下就知道了,这个代码成功的前提是:视频文件名和字幕文件名相同。

[FLsnow&SumiSora][GRANBLUE FANTASY-The Animation][01][TVRIP][1080p][HEVC_AAC].mkv
[FLsnow&SumiSora][GRANBLUE FANTASY-The Animation][01][TVRIP][1080p][HEVC_AAC].chs.ass
但是你这个例子里面两个文件名不一致,所以ass没能改名。

调整一下方法:
  1. @echo off
  2. for %%a in ("*GRANBLUE FANTASY*.mkv" "*GRANBLUE FANTASY*.ass") do (
  3.     for /f "tokens=1,2 delims=[]" %%b in ("%%~na") do (
  4.         echo ren "%%~a" "%%b_%%c%%~xa"
  5.     )
  6. )
  7. pause
复制代码

TOP

回复 12# xinjinjie


@echo off
for %%a in ("*GRANBLUE FANTASY*.mkv" "*GRANBLUE FANTASY*.ass") do (
    for /f "tokens=1,2,3 delims=[]" %%b in ("%%~na") do (
        echo ren "%%~a" "%%b_%%c_%%d%%~xa"
    )
)
pause

试试这样能否看到集数?

TOP

回复 14# xinjinjie


@echo off
for %%a in ("*GRANBLUE FANTASY*.mkv" "*GRANBLUE FANTASY*.ass") do (
    for /f "tokens=2,4 delims=[]-" %%b in ("%%~na") do (
        echo ren "%%~a" "%%b_%%c%%~xa"
    )
)
pause

TOP

能否写出通用的代码,取决于是否能够总结出通用的规律。
以15楼代码为例:
tokens=2,4 delims=[]- 表示以左括号或右括号或减号为列分隔符,取第二列和第四列

[FLsnow&SumiSora][GRANBLUE FANTASY-The Animation][01][TVRIP][1080p][HEVC_AAC].mkv
第1列是红色
第2列是黄色
第3列是绿色
第4列是蓝色

请告诉我 Arrow.S05E18.1080p.WEB-DL.DD5.1.H264-RARBG.mkv 的规律是什么?
它的规律跟 [FLsnow&SumiSora][GRANBLUE FANTASY-The Animation][01][TVRIP][1080p][HEVC_AAC].mkv 的规律一样吗?

TOP

回复 19# xinjinjie


delims只能以指定的字符做分隔符,它本身不具备判断功能。
如果所有文件名里面都包含 S数字数字E数字数字 这种格式,那么可以想别的办法来实现。

TOP

返回列表