2015-01-15 62 views
5

爲了簡單「你好」前綴添加到所有的PDF文件的文件夾在我使用這個批處理文件:Windows批處理爲文件名添加前綴,爲什麼添加兩次?

FOR %%F IN (*.pdf) DO (RENAME "%%F" "hello%%F") 

保存在此變成了「rename.bat」文件,並把它放在到我需要將文件重命名的文件夾。然後我只需雙擊「rename.bat」。

這幾乎可以工作,但第一個文件獲得前綴兩次。

讓我們的文件夾中說我:A.pdf,B.pdf,C.PDF,它們會轉換成:

  • hellohelloA.pdf
  • helloB.pdf
  • helloC .pdf,

你知道批處理文件有什麼問題嗎?


我注意到它總是這樣,當文件不止一個。當文件夾中只有一個文件時它可以正常工作,但它不是非常有用:-)。

+1

使用DIR/B並將名稱列表傳送到文本文件。然後遍歷該列表。目前,您在對該文件夾進行更改時正在迭代該文件夾。 – RGuggisberg

+0

可能的重複[For循環在批處理文件中重命名一次文件兩次](http://stackoverflow.com/questions/18519458/for-loop-in-batch-file-renames-one-file-twice) – MichaelS

回答

7

/f刪除奪回現有文件的問題:

FOR /f "delims=" %%F IN ('DIR /a-d /b *.pdf') DO (RENAME "%%F" "hello%%F") 
+0

感謝這項工作!我讀了'/ F「delims =」',我看到你也在調用命令「DIR/a-d/b * .pdf''。但是,請你解釋爲什麼我的工作不正常。爲了測試我甚至試圖在批處理文件'FOR %% F IN(* .pdf)DO(ECHO「%% F」)''中調用並且它只回聲3個文件,所以你知道爲什麼當使用'RENAME'代替'ECHO'它重命名第一個文件兩次? –

+0

RENAME更改您工作的文件列表,echo不是 –

+1

'FOR %% F ...'從磁盤目錄中逐個獲取文件名,所以如果目錄更改,FOR獲取的名稱也可以_may_更改,儘管這取決於幾個因素。 ('DIR')... FOR/F %% F ...'_first_執行DIR命令並_then_從它生成的列表中獲取文件名。請注意,/ F表單需要執行cmd.exe的第二個副本才能執行DIR命令,並且還會創建一個臨時文件,並在最後刪除。 – Aacini

0
@echo off 
echo. 
echo. Add Whatever Prefix... 
echo. 
echo. You Want To Add... 
echo. 
echo. To The Filename... 
echo. 
set /p variable=" > " 
setlocal enabledelayedexpansion 
for /f "delims=" %%a in (' dir /b /a-d *.pdf') do (
    set oldName=%%a 
    Set newName=%variable%!oldName! 
    Ren "!oldName!" "!newName!" 
) 
exit 

這種運作良好.....試試看......沒有雙前綴......永遠。

相關問題