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

作者: yamitsuki (發呆中滴大頭狗)   2016-12-20 15:06:43
想請問各位是否有碰過檔名開頭被加上"點"後
部分檔案可以批次更改副檔名,部分不行的問題呢
手邊要更名的檔案格式為
.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會改不到,多加了將所有檔案(*.*)都改掉
加了這行可以多處理掉一些,但還是會有一部分檔案會改不到
想請問各位這樣粗淺的處理是漏掉了什麼,或是否有較好的解決方式呢?
作者: LPH66 (-6.2598534e+18f)   2016-12-21 00:22:00
不要 *.* 只寫 .* 如何?
作者: nknudragon (想買合購鹿港玉珍齋 )   2016-12-21 23:28:00
forfiles
作者: yamitsuki (發呆中滴大頭狗)   2016-12-24 00:44:00
還是很感謝兩位的建議,現在剩檔名前的"."得解決 :)
作者: eight0 (欸XD)   2016-12-24 17:07:00
for /r %%i in (*.ext) do ren "%%i" "%%~ni.ext2"話說 dir 指令可以這樣用?
作者: nknudragon (想買合購鹿港玉珍齋 )   2016-12-24 21:42:00
你要查的是如何移除正檔名的.
作者: yamitsuki (發呆中滴大頭狗)   2016-12-25 01:20:00
查了一下,用/s可以顯示所有目錄與子目錄下的檔案,用在forfiles上也可以動作所以就沒去注意比較正確的處理是說想找的就是如何移除正檔名開頭的.沒錯,還在找尋中批次處理的部分eight0版友提供的方法已經解決,感謝
作者: eight0 (欸XD)   2016-12-25 10:30:00
移除開頭的點 http://codepad.org/xoQMtqWJ

Links booklink

Contact Us: admin [ a t ] ucptt.com