2015-11-16 131 views
0

我有多個文件,每個文件夾中有不同的擴展名。我需要將它們全部重命名爲一個擴展名(.txt)。批量重命名異構文件擴展名到一個擴展名

enter image description here

我曾嘗試用下面的命令:

ren *.* "%fname%:~0,-3%.txt" 

但我收到以下錯誤:

A duplicate file name exists, or the file 
cannot be found. 

總之我需要的所有文件轉換的文件夾中其他類型爲一種類型(.txt)

請hel頁。 由於提前

回答

0
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir" 
FOR /f "delims=" %%a IN ('dir /b /a-d "%sourcedir%\*.*" ') DO (
SET "filename=%%a" 
SET "filename=!filename:.=!.txt" 
ECHO(REN "%sourcedir%\%%a" "!filename!" 
) 

GOTO :EOF 

你需要改變的sourcedir設置,以滿足您的具體情況。

爲了測試目的,所需的REN命令僅僅是ECHO驗證命令是否正確後,將ECHO(REN更改爲REN以實際重命名文件。

如果您重命名方案工作過,似乎想要刪除的名稱的最後3個字符,然後添加.txt

這仍然會產生重複的文件名:

core.13848ab -> core.1384.txt

core.13848ac -> core.1384.txt

在沒有的清楚解釋你正在瞄準的方案,上面的代碼將從名稱中刪除任何.,並添加.txt

+0

非常感謝!它按需要工作。你能解釋一下嗎?filename =!filename:。= !. txt do? – iQuestProgrammer

+0

分配給文件名(文件名的內容,用'='後面的字符串替換':'和'='之間的字符串)'!'而不是'%',因爲'!'返回改變後的值(在delayedexpansion模式下)變量,而'%'返回初始值(當遇到命令時)。':'和'='之間的字符串是'.','='後面沒有字符串。 ,所以它用* nothing *替換所有'.'字符;喵,刪除變量'文件名'內的所有點。爲此,只需添加'.txt' – Magoo