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


    感谢ShowCode大大的指点,今天白天没什么时间,晚上有空了再来尝试、测试、研究。

TOP

回复 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

回复 5# taofan712


    感谢您的指点,我找时间观摩学习。
另外,说明一下,类似需要判断文件名中是否存在某个关键字符串的功能,BAT代码应该是有的吧?比如*GRANBLUE FANTASY*。我想达到的效果就是在代码里写入一个类似*GRANBLUE FANTASY*的代码来判断,含有这个内容的才去取用“[??]”这个格式的数字,最后改名为GRANBLUE FANTASY_??.mkv

TOP

回复 4# xinjinjie

你这是批量解决问题,怎么可能在代码里指定某个具体文件名的关键字呢?
我之前写的是针对你一楼列举的情况,取第一和第二个[]中的字符。
你后面补充的内容,情况都不一样,需要加很多判断,特别麻烦。建议你自己学一下for和set,自己根据实际情况来写。
【for】http://www.bathome.net/thread-2189-1-1.html
【set】http://bbs.bathome.net/thread-14927-1-1.html
【if】http://www.bathome.net/thread-2530-1-1.html

TOP

回复 2# taofan712


   虽然不能完全看懂这个代码,不过通过自己的连蒙带猜,似乎是检查到是MKV后缀名的文件后,通过获取第一个“[]”内的字符串来重命名,具体怎么获取的数字部分没看懂,怎么获取的ass后缀名的文件和对ass文件重命名的方法也没看懂,不过这个不是重点想要说的。

因为实际使用中,有可能第一个“[]”内的字符串不是需要的新的文件名的字符串,比如:[aaaaaaaa][GRANBLUE FANTASY-The Animation][01][TVRIP][1080p][HEVC_AAC].mkv,或者Arrow.S05E18.1080p.WEB-DL.DD5.1.H264-RARBG.mkv。这些情况的原始文件名的话,估计用层主这个代码是改不出想要的结果的。

所以,我设想的是,在BAT代码里指定原始文件名中含有的部分字符串,比如“GRANBLUE FANTASY”、“Arrow”,判断文件夹中有含有这个字符串的文件时获取一个指定格式的数值,取出这个数值来和前面指定的字符串一起组成新的文件名。
比如:[aaaaaaaa][GRANBLUE FANTASY-The Animation][01][TVRIP][1080p][HEVC_AAC].mkv,在代码里指定“GRANBLUE FANTASY”,“[??]”,最后改名为“GRANBLUE FANTASY_??.mkv”。
Arrow.S05E18.1080p.WEB-DL.DD5.1.H264-RARBG.mkv,在代码里指定“Arrow.S05”,“E??”,最后改名为“Arrow.S05_??.mkv”。
ass后缀名的文件用同样的方式来实现改名。

要实现这个效果,应该怎么来写BAT的代码呢?

TOP

回复 2# taofan712

这种for遍历文件的方式配合ren重命名需注意坑

TOP

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

TOP

返回列表