Re: [請問] 批次改檔名 (GOGOBOX用)

看板EzHotKey作者 (mymilk12)時間15年前 (2010/02/27 22:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 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

02/25 09:03,
最好寫成 "%%i"
02/25 09:03
請問特別括號起來有甚麼用意?我用沒括號跑都可以

02/25 09:29,
delims你這樣寫的話會變成分割字元是使用_ N E O 作分割
02/25 09:29
原來如此

02/25 09:33,
既然主檔名不需要變而副檔名固定要改成rmvb的話
02/25 09:33

02/25 09:36,
這樣寫不知行不行我沒測
02/25 09:36

02/25 09:37,
ren "*.*_NEO_" "*.RMVB"
02/25 09:37
抓不到副檔名有星號的

02/25 09:57,
我可能誤會delims用法了  昨天我測試的範本
02/25 09:57

02/25 09:58,
沒有包含相關文字
02/25 09:58

02/25 10:48,
如果你要只是rmvb_NEO_很簡單,但是任何格式_NEO_
02/25 10:48

02/25 10:48,
就麻煩一點
02/25 10:48

02/25 10:49,
OS:如果是linux指令就簡單多了
02/25 10:49

02/25 11:21,
for %%i in (*_NEO_) do rename "%%i" "%%~ni".rmvb
02/25 11:21

02/25 11:22,
連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)

02/25 13:26,
如果你沒用引號的話,有機會會在中間有空白字元的檔案被分
02/25 13:26

02/25 13:26,
割,因為會被當成參數
02/25 13:26

02/25 13:27,
比如說 ren 1 23.txt 123.txt 這樣就會跳錯誤
02/25 13:27

02/25 13:27,
但ren "1 23.txt" 123.txt 這樣就能正常動作
02/25 13:27
原來如此,感謝講解

02/25 14:29,
突然想到RegExp...
02/25 14:29
※ 編輯: mymike12 來自: 140.115.217.202 (02/25 16:44)

02/25 19:39,
前兩行可以改成 del *_CRCDATA_
02/25 19:39

02/25 19:40,
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)

02/26 12:45,
你這樣如果檔案名稱剛好有底線也是跟原來的問題一樣
02/26 12:45
沒辦法,目前只想到這種方法,也測試成功 如果遇到檔名底線就真的GG 希望有人能提供更好的解法? ※ 編輯: mymike12 來自: 125.225.97.226 (02/26 19:40) ---------------

02/26 23:26,
del *_CRCDATA_
02/26 23:26

02/26 23:27,
ren "*.???_NEO_" "*.???"
02/26 23:27

02/26 23:27,
ren "*.????_NEO_" "*.????"
02/26 23:27

02/26 23:30,
這樣應該能套用95%以上的檔案了吧,除非副檔名不是3或4字
02/26 23:30
left大提供的指令為目前最佳版本 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.100.162 ※ 編輯: mymike12 來自: 140.115.217.202 (02/28 17:32)
文章代碼(AID): #1BYIREp6 (EzHotKey)
文章代碼(AID): #1BYIREp6 (EzHotKey)