2013-10-01 79 views
1

我正在嘗試使用批處理文件將文件夾名稱添加到文件中。我想從1個文件夾中使用文件夾名稱。我有,從這裏和其他來源:正在添加使用批處理文件將文件夾名稱添加到文件

for %%* in (..) do set CurrDirName=%%~n* 

echo %CurrDirName% 

set strPrefix=%CurrDirName% 

for %%a in (*) do rename "%%a" "%CurrDirName%_%%a" 

正確的文件夾名稱,但它是夾在將它添加到文件名的無限循環太長的操作系統。我對這件事很陌生,今天就開始了,所以任何幫助都會非常感謝,如果你回覆像一個白癡說話,你就不會太遠!非常感謝

回答

2

此行爲是for命令的已知錯誤/功能。 for循環生成的文件列表是動態的,這意味着在循環中修改的文件將重新添加到列表中,導致無限循環。

使用dir命令生成一個靜態文件列表。

for /f "delims=" %%A in ('dir /b *') do rename "%%A" "%CurrDirName%_%%A" 

請參閱dir /?的所有選項。

歡迎來到批處理腳本的世界。 :)

+1

+1,我不確定它在技術上是一個FOR錯誤。但它肯定是一個設計限制。 – dbenham

+1

即時通訊這不是一個錯誤;它更像是來自FCB在CP/M中的歷史人爲因素。 – Endoro

+0

@Endoro和@dbenham我同意你的意見。 **':'''''for'命令不是特別的問題,但是,一般批量用戶不會關心[FCB](http://en.wikipedia.org/wiki/ File_control_block)舊的;只是命令在使用時似乎表現得如何。所以我的目標是[KIS](http://en.wikipedia.org/wiki/KISS_principle)。謝謝你,如果你們中的任何一個有鏈接到你想發佈的底層文件系統的更詳細的解釋,請做。這將是一個很好的參考。 –

相關問題