2011-04-17 154 views
2

我有一個程序ABC,它當前接受一個文件並將n個文件轉儲到名稱與沒有擴展名的文件名相同的文件夾中。Windows批處理文件:使用循環回顯目錄中的所有文件

創建的文件數量是任意的。我想將所有這些輸出文件並移動到另一個目錄。這意味着當我將10個文件傳遞給ABC程序時,我將把輸出全部放在一個目錄中,而不是10個單獨的目錄。

我將使用嵌套for循環來完成此操作。外部循環將發送每個參數以便由程序ABC處理,並且內部循環將每個和所有生成的文件移動到我自己選擇的文件夾中。

我已完成外部循環部分,但不知道如何檢索文件夾中的文件列表。

我第一次嘗試呼應他們

 
for /D %%Y in (dir %%~nX) do 
    echo %%Y 
) 

其中%%〜NX是從程序ABC新創建的文件夾的名稱,但它是所有回聲的文件夾的「目錄」,該名而而不是在它試圖循環它之前評估(dir %%〜nX)。

此外,目錄將包括父目錄和當前目錄,我不想要,如果我得到它的工作。我如何擺脫它們,是否有可能在循環播放之前評估命令?

回答

3

如果你看一下幫助你,當你運行FOR /?,你會看到,你要麼想:

for /D %%Y in (%%~nX\*) do 

for /F %%Y in ('dir /b %%~nX') do 
+0

'dir/b %%〜nX'語法就是我正在尋找的。謝謝。 – MxyL 2011-04-17 02:51:59

1

試試這個鏈接 -

http://rosettacode.org/wiki/Walk_a_directory/Recursively#Batch_File

相反回聲使用拷貝。

編輯:在這裏,你去

FOR /R <source-directory> %F IN (*.xml) DO COPY "%F" <destination-directory> 

這將從源目錄中的所有* .xml文件複製到目標目錄遞歸和扁平化的目錄結構。

+0

我使用的回聲來驗證我的文件尋找是正確的。但是,是的,我應該使用/ R或/ F代替 – MxyL 2011-04-17 02:51:27

相關問題