作者yamitsuki (@@)
看板EzHotKey
標題[批次] 批次更改副檔名,但部分檔名以"點"開頭導致無法執行
時間Tue Dec 20 15:06:43 2016
想請問各位是否有碰過檔名開頭被加上"點"後
部分檔案可以批次更改副檔名,部分不行的問題呢
手邊要更名的檔案格式為
.123.ext 或
123.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://webptt.com/m.aspx?n=bbs/EzHotKey/M.1482217610.A.EBD.html
1F:推 LPH66: 不要 *.* 只寫 .* 如何? 12/21 00:22
直接用
ren .* *.ext2 會跳
"命令語法不正確" XD
若改為
ren .*.ext *.ext2 則不會發生任何事
2F:推 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
3F:→ yamitsuki: 還是很感謝兩位的建議,現在剩檔名前的"."得解決 :) 12/24 00:44
※ 編輯: yamitsuki (140.120.90.156), 12/24/2016 00:49:13
4F:推 eight0: for /r %%i in (*.ext) do ren "%%i" "%%~ni.ext2" 12/24 17:07
5F:→ eight0: 話說 dir 指令可以這樣用? 12/24 17:07
6F:推 nknudragon: 你要查的是如何移除正檔名的. 12/24 21:42
7F:→ yamitsuki: 查了一下,用/s可以顯示所有目錄與子目錄下的檔案,用 12/25 01:20
8F:→ yamitsuki: 在forfiles上也可以動作所以就沒去注意比較正確的處理 12/25 01:21
9F:→ yamitsuki: 是說想找的就是如何移除正檔名開頭的.沒錯,還在找尋中 12/25 01:22
10F:→ yamitsuki: 批次處理的部分eight0版友提供的方法已經解決,感謝 12/25 01:34