作者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)