2013-04-21 14 views
14

更換使用批處理子文件重命名我想重命名文件名像「如何TO- 重命名 -file.jpg」「如何TO- 重用 -file.jpg 「使用Windows批處理文件如何在Windows

iee我只想替換文件名中的一個或兩個單詞。

+1

請添加你試過的東西。另外,我們需要更多信息。 – 2013-04-21 07:25:43

+0

考慮嘗試[批量重命名](http://www.bulkrenameutility.co.uk/Download.php)。 – 2013-04-21 07:27:44

+0

@casperOne嗯......有點太嚴格我認爲。 – 2017-11-24 01:01:29

回答

33
@echo off 

Set "Filename=how-to-rename-file.jpg" 
Set "Pattern=rename" 
Set "Replace=reuse" 

REM Call Rename "%Filename%" "%%Filename:%Pattern%=%Replace%%%" 

Call Echo %%Filename:%Pattern%=%Replace%%% 
:: Result: how-to-reuse-file.jpg 

Pause&Exit 

我給你的文件的一個循環其他例如:

UPDATE:

我已經錯過了在語法「的原因有些東西快速打字我的最後一次編輯,這裏是更正的代碼:

@echo off 
Setlocal enabledelayedexpansion 

Set "Pattern=rename" 
Set "Replace=reuse" 

For %%# in ("C:\Folder\*.jpg") Do (
    Set "File=%%~nx#" 
    Ren "%%#" "!File:%Pattern%=%Replace%!" 
) 

Pause&Exit 

PS:你可以在這裏閱讀以瞭解更多關於子字符串: http://ss64.com/nt/syntax-substring.html http://ss64.com/nt/syntax-replace.html

+4

第二個代碼正是我所需要的。非常感謝您的幫助。也感謝提供給我的鏈接,瞭解有關字符串的更多信息我發現此鏈接非常翔實:-) – Varun 2013-04-21 07:56:26

+1

爲什麼你使用'Set'File = %%〜nx#「'而不是簡單的Set'」File = %%#「 '? – 2015-01-14 12:50:19

+1

@Marco Demaio在保留的For修飾符中引入新用戶。 – ElektroStudios 2015-01-15 02:01:48

23

上面的代碼不重命名文件 - 路徑是一個問題,源文件名不正確。

這將工作在當前文件夾中的文件 - 除了那些!在名字中將是一個問題。

@echo off 
Setlocal enabledelayedexpansion 

Set "Pattern=rename" 
Set "Replace=reuse" 

For %%a in (*.jpg) Do (
    Set "File=%%~a" 
    Ren "%%a" "!File:%Pattern%=%Replace%!" 
) 

Pause&Exit 
+0

我知道這是一個老話題,但我應該添加什麼來定義一個文件夾而不是使用本地文件夾? – Schuere 2015-01-05 08:24:58

+1

在循環上方放置'pushd「c:\ folder」',或使用'cd/d「c:\ folder」' – foxidrive 2015-01-06 10:27:03

+0

它的作用就像一個魅力!好東西! – 2015-01-14 12:31:13