Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理文件将所有文件从目录树复制到单个目录_Batch File_Dos - Fatal编程技术网

Batch file 使用批处理文件将所有文件从目录树复制到单个目录

Batch file 使用批处理文件将所有文件从目录树复制到单个目录,batch-file,dos,Batch File,Dos,我需要将目录树中的所有文件复制到一个目录中。快速搜索为我提供了以下方法: 我试过了,效果很好。为了简化一些事情,我创建了一个快速批处理文件,这样以后就不必再查这个文件了。我的批处理文件如下所示: 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% p

我需要将目录树中的所有文件复制到一个目录中。快速搜索为我提供了以下方法:

我试过了,效果很好。为了简化一些事情,我创建了一个快速批处理文件,这样以后就不必再查这个文件了。我的批处理文件如下所示:

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"
如果我将其输入命令行,则在作为批处理文件运行时,该操作不起作用。我确实尝试过用实际路径替换变量,但得到了相同的错误。即使我创建一个批处理文件时只使用命令行中的行,但从该文件运行时也不起作用。有人知道我做错了什么吗


提前感谢您的帮助。

set命令中的引号应仅围绕值,而不是变量名。谢谢,这达到了预期效果。所以,在批处理文件中,我需要用%转义%并添加“do”?引用还有其他一些细节,a
/d
delims=
但实际上,您在copy命令中遗漏了源代码,并且在批处理文件中使用时,
元变量需要两个百分比。@AxelKemper您可以在放置引号时尝试代码。我相信你会发现这一切都是合法的。当包装变量名时,引号不包含在变量中,然后将变量包装在引号中。这使得调试更容易,您可以看到引用的内容和未引用的内容。我尝试了用引号和非引号包装变量,两种方法都有效。谢谢你的帮助。
@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
@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