Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Loops 批处理文件-用于&;Xcopy获取的参数数无效(不是引号)?_Loops_Batch File_For Loop_Xcopy - Fatal编程技术网

Loops 批处理文件-用于&;Xcopy获取的参数数无效(不是引号)?

Loops 批处理文件-用于&;Xcopy获取的参数数无效(不是引号)?,loops,batch-file,for-loop,xcopy,Loops,Batch File,For Loop,Xcopy,基本上,我要做的是制作一个批处理文件,它将在计算机上运行,并从台式机和我在计算机上的任何用户的文档中获取所有内容。问题是,我不会知道每个用户名,因为它将在未知计算机上用于备份。试图找到一种方法来复制这些东西,但到目前为止我还不能。我一直在处理我的文档,不断得到“无效数量的参数” 您需要将xcopy的第一个参数用双引号括起来,因为它是一个包含空格的目录名: for /D /r %%G in ("C:\Users") DO ( for /D /r %%H in ("%%~G\My Docum

基本上,我要做的是制作一个批处理文件,它将在计算机上运行,并从台式机和我在计算机上的任何用户的文档中获取所有内容。问题是,我不会知道每个用户名,因为它将在未知计算机上用于备份。试图找到一种方法来复制这些东西,但到目前为止我还不能。我一直在处理我的文档,不断得到“无效数量的参数”


您需要将
xcopy
的第一个参数用双引号括起来,因为它是一个包含空格的目录名:

for /D /r %%G in ("C:\Users") DO (
    for /D /r %%H in ("%%~G\My Documents\") do (
        xcopy "%%~H" /e /y "C:\TestFor Work"
    )
)
您还需要使用
~
来防止变量扩展中包含双引号

for /d %%u in ("c:\users\*") do for %%f in ("Desktop" "Documents") do (
    robocopy "%%~u\%%~f" "c:\test for work\%%~u\%%~f" /s
)
或者,对于xcopy

for /d %%u in ("c:\users\*") do for %%f in ("Desktop" "Documents") do (
    xcopy "%%~u\%%~f" "c:\test for work\%%~u\%%~f" /e /y /i
)

它仍然做同样的事情。你没有按照我的建议去做。我已经编辑了我的答案来说明问题,并更正了另一个问题。我也会对那些
/r
标志有些警惕。在运行这样的脚本之前,请始终通过将
echo
放在
xcopy
前面来测试它的合理性。我将它逐字复制,但仍然得到无效的参数数。哦,出于某种原因,它只是复制桌面文件?根本没有我的文档,我也没有提到或输入任何关于桌面文件的内容。您是否考虑过从外部循环开始,看看它是否会遍历
C:\users
中的所有用户?(提示:不是这样的)
for /d %%u in ("c:\users\*") do for %%f in ("Desktop" "Documents") do (
    xcopy "%%~u\%%~f" "c:\test for work\%%~u\%%~f" /e /y /i
)