大家好,
我只想要用簡易指令批次重新命名檔案.
for %i in (*.txt) do ren "%i" "abc%i"
但是第一個檔案會重複命名
d:\tmpp>for %i in (.txt) do ren "%i" "abc%i"
d:\tmpp>ren "001.txt" "abc001.txt"
d:\tmpp>ren "002.txt" "abc002.txt"
d:\tmpp>ren "004.txt" "abc004.txt"
d:\tmpp>ren "abc001.txt" "abcabc001.txt"
-->明明001.txt 已經重新命名了, 為何最後會再命名一次.
我不太了解為何如此. 我使用 for %i in (.txt) do echo %i >>d:\test.txt
匯出的txt 內容確實只有三個檔案名
abx001.txt
abx002.txt
abx004.txt
為何重新命名會有一個重複??
可能是【wildcard 萬用字元】的BUG
要精準使用【wildcard 萬用字元】的規則就能逹到您要的結果
您的例子只要用前三個字元為基準則可如下:
for %i in (???.txt) do ren "%i" "abc%i"
根據網路上查的資料
當你使用 for %i in (*.txt) do ren "%i" "abc%i" 這條命令時,它會將所有副檔名為 .txt 的檔案重新命名為 "abc" + 檔案名稱 的形式。
當 for 指令執行時,它會將每個符合條件的檔案名稱存到 %i 變數中,然後對每個 %i 變數的值進行 ren 命令。
在 ren 命令中,你使用 "abc%i" 作為新檔名。因此,對於檔案 001.txt,它會被命名為 abc001.txt。接下來,當 for 指令處理到 002.txt 時,它會執行命令 ren "002.txt" "abc002.txt"。這是沒有問題的。但當 for 指令處理到 abc001.txt 時,它會執行命令 ren "abc001.txt" "abcabc001.txt"。這就是為什麼你看到 abc001.txt 重複出現的原因。