[批次] 批次更改副檔名,但部分檔名以"點"開頭導致無法執行

看板EzHotKey作者 (@@)時間8年前 (2016/12/20 15:06), 8年前編輯推噓5(506)
留言11則, 4人參與, 最新討論串1/1
想請問各位是否有碰過檔名開頭被加上"點"後 部分檔案可以批次更改副檔名,部分不行的問題呢 手邊要更名的檔案格式為 .123.ext123.ext 其中123為檔案的數字編號,ext為要被替換掉的副檔名 目標是將其批次更名為 123.ext2 所以先寫了以下批次檔進行測試,單獨放入底層資料夾執行沒問題 ========================= @echo off rename *.ext *.ext2 ========================= 又因為檔案分散在多個且多層的資料夾下(各層資料夾都是數字編號) 所以就先簡單的用以下批次檔來處理 ========================= @echo off dir /s ren *.ext *.ext2 dir /s ren *.* *.ext2 ========================= 其中第二行ren是因為有些檔案的檔名開頭存在"."的時候會沒辦法辨識 若直接只跑 *.ext會改不到,多加了將所有檔案(*.*)都改掉 加了這行可以多處理掉一些,但還是會有一部分檔案會改不到 想請問各位這樣粗淺的處理是漏掉了什麼,或是否有較好的解決方式呢? -- ┌┐ ┌┐ ┌┐ └┘┌┐ ││ └┘ ┌┐┌┬──┬┬┬┬┬┘└┬──┬┐┌┤│┌┬┐ │││├─ │ │├┐┌┤ ─┤│││└┘││ │└┘│┌┐│││││││└─┐││││┌┐┤│ └─┐│└┘││││││└┬─┘│└┘│││││ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.120.90.156 ※ 文章網址: https://www.ptt.cc/bbs/EzHotKey/M.1482217610.A.EBD.html

12/21 00:22, , 1F
不要 *.* 只寫 .* 如何?
12/21 00:22, 1F
直接用 ren .* *.ext2 會跳 "命令語法不正確" XD 若改為 ren .*.ext *.ext2 則不會發生任何事

12/21 23:28, , 2F
forfiles
12/21 23:28, 2F
改用 forfiles /s /C "cmd /c ren *.ext *.ext2" 後可以解決一部分 不過檔名前的 "." 還是會存在,一直找不到方法弄掉 雖然加了echo off還是會跳出一大串 "系統找不到指定的檔案。" 大概是改好名的資料夾裡面已經沒有 *.ext 的關係吧 還有不知道是否因為檔案過多,仍有部分子資料夾內的沒有掃到也沒改到 看來只能先降一層,從第一層的每個資料夾個別跑了(目前唯一解) ※ 編輯: yamitsuki (140.120.90.156), 12/24/2016 00:43:24

12/24 00:44, , 3F
還是很感謝兩位的建議,現在剩檔名前的"."得解決 :)
12/24 00:44, 3F
※ 編輯: yamitsuki (140.120.90.156), 12/24/2016 00:49:13

12/24 17:07, , 4F
for /r %%i in (*.ext) do ren "%%i" "%%~ni.ext2"
12/24 17:07, 4F

12/24 17:07, , 5F
話說 dir 指令可以這樣用?
12/24 17:07, 5F

12/24 21:42, , 6F
你要查的是如何移除正檔名的.
12/24 21:42, 6F

12/25 01:20, , 7F
查了一下,用/s可以顯示所有目錄與子目錄下的檔案,用
12/25 01:20, 7F

12/25 01:21, , 8F
在forfiles上也可以動作所以就沒去注意比較正確的處理
12/25 01:21, 8F

12/25 01:22, , 9F
是說想找的就是如何移除正檔名開頭的.沒錯,還在找尋中
12/25 01:22, 9F

12/25 01:34, , 10F
批次處理的部分eight0版友提供的方法已經解決,感謝
12/25 01:34, 10F

12/25 10:30, , 11F
移除開頭的點 http://codepad.org/xoQMtqWJ
12/25 10:30, 11F
文章代碼(AID): #1OMDYAwz (EzHotKey)
文章代碼(AID): #1OMDYAwz (EzHotKey)