使用批处理文件将目录树中的所有文件复制到单个目录

时间:2013-09-05 14:02:41

标签: batch-file dos

我需要将目录树中的所有文件复制到一个目录中。快速搜索为我提供了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 个答案:

答案 0 :(得分: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