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

看板EZsoft (小軟體)作者 (mymilk12)時間16年前 (2010/02/25 08:53), 編輯推噓5(5020)
留言25則, 5人參與, 最新討論串3/3 (看更多)
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, , 1F
最好寫成 "%%i"
02/25 09:03, 1F
請問特別括號起來有甚麼用意?我用沒括號跑都可以

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

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

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

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

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

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

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

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

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

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

02/25 11:22, , 12F
連tmp都不用 %%~ni 就是忽略副檔名的顯示法
02/25 11:22, 12F
可是我想要寫的是所有檔案適用的 還是可以用其他的語言寫? ※ 編輯: 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, , 13F
如果你沒用引號的話,有機會會在中間有空白字元的檔案被分
02/25 13:26, 13F

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

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

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

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

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

02/25 19:40, , 19F
dir /b *_NEO_ >> list.tmp
02/25 19:40, 19F
恩簡短不少 ※ 編輯: 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, , 20F
你這樣如果檔案名稱剛好有底線也是跟原來的問題一樣
02/26 12:45, 20F
沒辦法,目前只想到這種方法,也測試成功 如果遇到檔名底線就真的GG 希望有人能提供更好的解法? ※ 編輯: mymike12 來自: 125.225.97.226 (02/26 19:40)

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

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

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

02/26 23:30, , 24F
這樣應該能套用95%以上的檔案了吧,除非副檔名不是3或4字
02/26 23:30, 24F
mymike12:轉錄至看板 EzHotKey 02/27 22:06

02/28 17:28, , 25F
感謝left大
02/28 17:28, 25F
文章代碼(AID): #1BXSdl62 (EZsoft)
文章代碼(AID): #1BXSdl62 (EZsoft)