Board logo

标题: [文件操作] [已解决]批处理如何高效重命名复杂的电视剧文件?答案2楼 [打印本页]

作者: hacker85    时间: 2011-12-19 21:10     标题: [已解决]批处理如何高效重命名复杂的电视剧文件?答案2楼

下载了一部83年的电视剧《射雕英雄传》,包含了三部,都在一个文件夹里:

第一部分:
[FK影视出品]射雕英雄传之东邪西毒.1983.EP01.双语字幕.DVDRIP.mkv
……
[FK影视出品]射雕英雄传之东邪西毒.1983.EP20.双语字幕.DVDRIP.mkv
第二部分:
[FK
作者: weichenxiehou    时间: 2011-12-19 21:33

  1. @echo off
  2. for /f "delims=" %%a in ('dir/b [FK影视出品]*.mkv') do (
  3.   for /f "tokens=2,5 delims=之.P" %%i in ("%%a") do ren "%%a" "%%i%%j.mkv"
  4. )
复制代码

作者: hacker85    时间: 2011-12-19 21:49

回复 2# weichenxiehou


    这个能把一个文件夹中三个不同名字的电视剧文件都改过来吗?
作者: weichenxiehou    时间: 2011-12-19 21:53

回复 3# hacker85
原理上是可以,因为没有你的测试环境,所以不能测试,建议你先做好备份,再进行测试。
作者: hacker85    时间: 2011-12-19 22:03

我不太懂tokens=2,5 delims=之.P是什么意思?

这里的2,5代表得是第二个和第五个?那么是什么呢?

delims=之.P  这意思是用这三个字符来分隔,还是别的?

我的批水平还不是很高

你的代码是成功的
作者: hacker85    时间: 2011-12-19 22:03

我不太懂tokens=2,5 delims=之.P是什么意思?

这里的2,5代表得是第二个和第五个?那么是什么呢?

delims=之.P  这意思是用这三个字符来分隔,还是别的?

我的批水平还不是很高

你的代码是成功的
作者: weichenxiehou    时间: 2011-12-19 22:07

回复 6# hacker85
你用“之.P”这三个字符把每个文件名分成N列,会发现你要的东西就固定是第2和5列。
作者: hacker85    时间: 2011-12-19 22:16

回复 7# weichenxiehou


    如何能看到“之.P”所分割后的结果?

我想这三个字符应该是把整个名字分割成了4部分吧:一 之 二 . 三 P 四
作者: weichenxiehou    时间: 2011-12-19 22:37

回复 8# hacker85
详情请参阅论坛加精高亮贴--namejm“批处理从入门到精通”,这些都是很基础的东西。
作者: qq2501    时间: 2011-12-19 23:00

如果lz能把目录的文件名字列出来的话,我们能写出更准确更高效的代码。
作者: hacker85    时间: 2011-12-20 11:43

回复 10# qq2501


    我在发帖的时候已经把整个文件名的情况都描述在一楼了,但是我今天再来看的时候,貌似被管理员给重新编辑了,所以你看到的只是有一个红色字体的

文件名,其实另外两个的情况只是红色字体的部分内容不一样,但都是四个字,你知道的。呵呵
作者: hacker85    时间: 2011-12-20 12:51

回复 9# weichenxiehou


    我看了那篇教程,于是对用“之.P”所分割后的结果进行了单独的显示:

H:\vedio>锘緻echo off
'锘緻echo' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

H:\vedio>for /F "tokens=2,5 delims=涔?P" %i in (test.txt) do echo %i %j

H:\vedio>echo 01.双语字幕.DVDRI         
01.双语字幕.DVDRI

H:\vedio>pause
请按任意键继续. . .

================为什么上方的内容是那个样子,还有乱码不说,还把代码也显示出来了??=======================

我的代码是:
@echo off
for /f "tokens=2,5 delims=之.P" %%i in (test.txt) do echo %%i %%j
pause

test.txt文件的内容是:
[FK影视出品]射雕英雄传之东邪西毒.1983.EP01.双语字幕.DVDRIP.mkv
作者: awk    时间: 2011-12-29 19:26

回复 12# hacker85


用记事本打开你的bat文件,文件,另存为,选择ANSI编码。
作者: hacker85    时间: 2011-12-29 21:41

回复 13# awk


    请问对于“[66影视www.66ys.cn]超能英雄第三季01中英字幕1024x576版.rmvb”这样的文件,如果我用下面的代码想改成

“英雄第三季01.rmvb”的话,为什么不可以呢?
代码:

@echo off
for /f %%i in ('dir /b [66*.rmvb') do (
        for /f "tokens=2 delims=英,中" %%a in (%%i) do ren "%%i" "英%%a.rmvb"
)

注:我觉得应该是我的ren语句中的那个"英"用得不对,请指教,在线等。
作者: awk    时间: 2011-12-29 23:04

回复 14# hacker85
  1. @echo off
  2. for /f %%i in ('dir /b [66*.rmvb') do (
  3.     for /f "tokens=2 delims=英,中" %%a in ("%%i") do (
  4.         ren "%%i" "英%%a.rmvb"
  5.     )
  6. )
复制代码

作者: hacker85    时间: 2011-12-30 10:01

回复 15# awk


    第二层for里的do语句后面必须要用那个括号吗?  2楼的代码没有这样的情况  直接跟了一个ren
作者: awk    时间: 2011-12-30 10:33

回复 16# hacker85


真正起作用的不是括号而是双引号
作者: hacker85    时间: 2011-12-30 10:34

回复 17# awk


    3Q   了解了   竟然忘了加双引号给%%i,阿兮
作者: hacker85    时间: 2012-1-1 20:07

回复 17# awk


    再问一个问题,直接在这里补充了:
英超能英雄第三季19中英字幕1024x576版.rmvb                          英雄第三季19.rmvb
英超能英雄第四季HD中英字幕1024x576版01-02.rmvb                 英雄第四季01-02.rmvb(整个文件里就这么一个是两集在一起的,如果实在难受,可以不管这个)
英超能英雄第四季HD中英字幕1024x576版03.rmvb                      英雄第四季03.rmvb
英雄第四季1024x57614.rmvb                                                 英雄第四季14.rmvb

这四种情况的文件如何更名为:英雄第X季XX.rmvb




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2