我有如下所示的文件夾和文件結構。我需要一個MS DOS批處理文件來重命名多個文件夾中的文件。任何人都可以請幫忙嗎? TIA。批處理文件重命名多個文件夾中的文件
- 主文件夾
-->Sub Folder1
--- File1_EN.txt
--- File2_EN.txt
--> Sub Folder2
--- File3_EN.txt
--- File4_EN.txt
我想在文件名稱爲 「ENU」 重命名後綴 「EN」。
我有如下所示的文件夾和文件結構。我需要一個MS DOS批處理文件來重命名多個文件夾中的文件。任何人都可以請幫忙嗎? TIA。批處理文件重命名多個文件夾中的文件
- 主文件夾
-->Sub Folder1
--- File1_EN.txt
--- File2_EN.txt
--> Sub Folder2
--- File3_EN.txt
--- File4_EN.txt
我想在文件名稱爲 「ENU」 重命名後綴 「EN」。
@echo off
for /D %%d in (*) do (
ren "%%d\File*_EN.txt" "File*_ENU.txt"
)
您可以通過這種方式做到這一點:
@Echo OFF
Set "Folder=C:\Users\Administrador\Desktop\Nueva carpeta"
Set "Suffix=_EN"
Set "Replace=_ENU"
Set "RegEx=\".*%Suffix%\"$"
FOR /R "%Folder%" %%# in ("*") DO (
(Echo "%%~n#"| FINDSTR /I "%RegEx%" 1>NUL) && (
Set "NewFileName=%%~nx#"
Call Set "NewFileName=%%NewFileName:%Suffix%=%Replace%%%"
Call Echo [+] Renaming: "%%~nx#" "%%NewFileName%%"
Ren "%%#" "%%NewFileName%%"
)
)
Pause&Exit
的Findstr工具是確保匹配的字符串是一個後綴,比做一個子或「_」字符分割文件名權要好。
試試這個:
ren folder1\file*.txt file*_enu.txt
ren folder2\file*.txt file*_enu.txt
只有當新名稱大於原始名稱時,您的方法纔有效。如果新名稱更短,則失敗... – Aacini 2013-04-23 15:19:26
我總是針對OP的特定問題發佈解決方案。批量作爲腳本語言永遠無法回答一個案例的所有可想象的問題。[通配符如何在MS-DOS中工作?](http://blogs.msdn.com/b/oldnewthing/archive/2007/12/17/ 6785519.aspx)這也適用:'ren file * .txt file * e.txt',新文件名是'file?_e.txt'。 – Endoro 2013-04-23 16:40:20
是的,我曾經這麼做過:)我的評論不是對你的回答的批評,而是一個解釋性說明,如果有人認爲他們可能會用同樣的方法來創建一個新的短名字...... – Aacini 2013-04-23 22:07:55
如果希望所有子文件夾被改變用途:
for /f "delims=*" %a in ('dir File*_EN.txt /b /s') do ren "%a" File*_ENU.txt
你有沒有看着http://stackoverflow.com/questions/717171/ recursive-renaming-file-names-folder-names-with-a-batch-file – Ali 2013-04-23 06:18:20