作者mymike12 (mymilk12)
看板EzHotKey
标题Re: [请问] 批次改档名 (GOGOBOX用)
时间Sat Feb 27 22:06:04 2010
※ [本文转录自 EZsoft 看板]
作者: mymike12 (mymilk12) 看板: EZsoft
标题: Re: [请问] 批次改档名 (GOGOBOX用)
时间: Thu Feb 25 08:53:00 2010
请直接按END
debug程式
for %%i in (*_CRCDATA_) do del %%i
for %%i in (*_NEO_) do echo %%i >> list.tmp
for /F "delims=_NEO_" %%i in (list.tmp) do echo %%i >> list2.tmp
list.tmp
--
[KALEIDOSTAR][33][DVDRIP][WMV9].rmvb_NEO_
[KALEIDOSTAR][34][DVDRIP][WMV9].rmvb_NEO_
--
list2.tmp
--
[KAL
[KAL
程式第三行改写多次无法列出正确的值
用分段符号的写法不知道错在哪@@麻烦帮除虫
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.217.202
1F:推 dennisxkimo:最好写成 "%%i" 02/25 09:03
请问特别括号起来有甚麽用意?我用没括号跑都可以
2F:推 junorn:delims你这样写的话会变成分割字元是使用_ N E O 作分割 02/25 09:29
原来如此
3F:推 junorn:既然主档名不需要变而副档名固定要改成rmvb的话 02/25 09:33
4F:→ junorn:这样写不知行不行我没测 02/25 09:36
5F:→ junorn:ren "*.*_NEO_" "*.RMVB" 02/25 09:37
抓不到副档名有星号的
6F:→ dennisxkimo:我可能误会delims用法了 昨天我测试的范本 02/25 09:57
7F:→ dennisxkimo:没有包含相关文字 02/25 09:58
8F:→ dennisxkimo:如果你要只是rmvb_NEO_很简单,但是任何格式_NEO_ 02/25 10:48
9F:→ dennisxkimo:就麻烦一点 02/25 10:48
10F:→ dennisxkimo:OS:如果是linux指令就简单多了 02/25 10:49
11F:→ dennisxkimo:for %%i in (*_NEO_) do rename "%%i" "%%~ni".rmvb 02/25 11:21
12F:→ dennisxkimo:连tmp都不用 %%~ni 就是忽略副档名的显示法 02/25 11:22
可是我想要写的是所有档案适用的
还是可以用其他的语言写?
※ 编辑: mymike12 来自: 140.115.217.202 (02/25 12:30)
想了约半天找出了解决方案
for %%i in (*_CRCDATA_) do del %%i
for %%i in (*_NEO_) do echo %%i >> list.tmp
for /F "delims=_" %%i in (list.tmp) do rename %%i_NEO_ %%i
del list.tmp
实测OK!
---
使用教学:
想用的把上面程式码复制到记事本,然後另存新档
(选择所有档案),档名打gogobox.bat
---
欢迎高手给出更棒的solution
※ 编辑: mymike12 来自: 140.115.217.202 (02/25 12:43)
13F:推 junorn:如果你没用引号的话,有机会会在中间有空白字元的档案被分 02/25 13:26
14F:→ junorn:割,因为会被当成参数 02/25 13:26
15F:→ junorn:比如说 ren 1 23.txt 123.txt 这样就会跳错误 02/25 13:27
16F:→ junorn:但ren "1 23.txt" 123.txt 这样就能正常动作 02/25 13:27
原来如此,感谢讲解
17F:→ abccbaandy:突然想到RegExp... 02/25 14:29
※ 编辑: mymike12 来自: 140.115.217.202 (02/25 16:44)
18F:推 leftalan:前两行可以改成 del *_CRCDATA_ 02/25 19:39
19F:→ leftalan: dir /b *_NEO_ >> list.tmp 02/25 19:40
恩简短不少
※ 编辑: mymike12 来自: 140.115.217.202 (02/26 00:07)
新版:
for %%i in (*_CRCDATA_) do del "%%i"
for %%i in (*_NEO_) do echo %%i >> list.tmp
for /F "delims=_" %%i in (list.tmp) do rename "%%i_NEO_" "%%i"
del list.tmp
改进:对某些测试文件失效的问题
使用教学:
想用的把上面程式码复制到记事本,然後另存新档
(选择所有档案)档名打gogobox2.bat
※ 编辑: mymike12 来自: 140.115.217.202 (02/26 10:52)
20F:→ dennisxkimo:你这样如果档案名称刚好有底线也是跟原来的问题一样 02/26 12:45
没办法,目前只想到这种方法,也测试成功
如果遇到档名底线就真的GG
希望有人能提供更好的解法?
※ 编辑: mymike12 来自: 125.225.97.226 (02/26 19:40)
---------------
21F:→ leftalan:del *_CRCDATA_ 02/26 23:26
22F:→ leftalan:ren "*.???_NEO_" "*.???" 02/26 23:27
23F:→ leftalan:ren "*.????_NEO_" "*.????" 02/26 23:27
24F:→ leftalan:这样应该能套用95%以上的档案了吧,除非副档名不是3或4字 02/26 23:30
left大提供的指令为目前最佳版本
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.225.100.162
※ 编辑: mymike12 来自: 140.115.217.202 (02/28 17:32)