看板 EzHotKey 關於我們 聯絡資訊
想請問各位是否有碰過檔名開頭被加上"點"後 部分檔案可以批次更改副檔名,部分不行的問題呢 手邊要更名的檔案格式為 .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
LPH66: 不要 *.* 只寫 .* 如何? 12/21 00:22
直接用 ren .* *.ext2 會跳 "命令語法不正確" XD 若改為 ren .*.ext *.ext2 則不會發生任何事
nknudragon: forfiles 12/21 23:28
改用 forfiles /s /C "cmd /c ren *.ext *.ext2" 後可以解決一部分 不過檔名前的 "." 還是會存在,一直找不到方法弄掉 雖然加了echo off還是會跳出一大串 "系統找不到指定的檔案。" 大概是改好名的資料夾裡面已經沒有 *.ext 的關係吧 還有不知道是否因為檔案過多,仍有部分子資料夾內的沒有掃到也沒改到 看來只能先降一層,從第一層的每個資料夾個別跑了(目前唯一解) ※ 編輯: yamitsuki (140.120.90.156), 12/24/2016 00:43:24
yamitsuki: 還是很感謝兩位的建議,現在剩檔名前的"."得解決 :) 12/24 00:44
※ 編輯: yamitsuki (140.120.90.156), 12/24/2016 00:49:13
eight0: for /r %%i in (*.ext) do ren "%%i" "%%~ni.ext2" 12/24 17:07
eight0: 話說 dir 指令可以這樣用? 12/24 17:07
nknudragon: 你要查的是如何移除正檔名的. 12/24 21:42
yamitsuki: 查了一下,用/s可以顯示所有目錄與子目錄下的檔案,用 12/25 01:20
yamitsuki: 在forfiles上也可以動作所以就沒去注意比較正確的處理 12/25 01:21
yamitsuki: 是說想找的就是如何移除正檔名開頭的.沒錯,還在找尋中 12/25 01:22
yamitsuki: 批次處理的部分eight0版友提供的方法已經解決,感謝 12/25 01:34
eight0: 移除開頭的點 http://codepad.org/xoQMtqWJ 12/25 10:30