2013-09-05 69 views
0

我需要將目錄樹中的所有文件複製到單個目錄中。快速搜索爲我提供了this方法:使用批處理文件將目錄樹中的所有文件複製到單個目錄

for /f "tokens=*" %a in ('dir /b /s /a-d') do @copy "%a" "c:\Single-Folder" 

我試過了,它工作得很好。決定簡化一下,我創建了一個快速批處理文件,所以我不用在將來查看這個文件。我的批處理文件看起來像這樣:

set COPY_FROM="C:\Users\me\Desktop\Disc 1" 
set COPY_TO="C:\Testing\test" 

cd %COPY_FROM% 
for /f "tokens=*" %a in ('dir /b /s /a-d') do @copy %COPY_TO% 
pause 

不幸的是,當我執行這一點,我得到的錯誤:

C:\Users\me\Desktop\Tools>set COPY_FROM="C:\Users\me\Desktop\Disc 1" 

C:\Users\me\Desktop\Tools>set COPY_TO="C:\Testing\test" 
"\Users\me\Desktop\Disc 1"') was unexpected at this time. 
C:\Users\me\Desktop\Tools>for /f "tokens=*" "\Users\me\Desktop\Disc 1"') do @copy "\Testing\test" 

,如果我進入它什麼工作進入命令行模式時,作爲運行不工作批處理文件。我嘗試用實際路徑替換變量,但得到相同的錯誤。即使我只用命令行中的行創建批處理文件,從文件運行時也不起作用。有誰知道我做錯了什麼?

非常感謝您的幫助。

回答

1
@echo off 
set "COPY_FROM=C:\Users\me\Desktop\Disc 1" 
set "COPY_TO=C:\Testing\test" 
md "%copy_to%" 2>nul 
cd /d "%COPY_FROM%" 
for /f "delims=" %%a in ('dir /b /s /a-d') do copy "%%a" "%COPY_TO%" 
pause 
+1

set命令中的引號應該只圍繞值而不是變量名稱。 –

+0

謝謝,這有效果。所以,在批處理文件中,我需要用%來轉義%並添加「do」? – Tim

+0

還有一些引用,'/ d'和'delims ='的其他細節,但基本上你已經在copy命令中省略了源代碼,並且在批處理文件中使用'for'變量時需要兩個百分點。 – foxidrive

相關問題