我有以下代码行:
FOR /R D:\1_FOLDER %f IN (*.jpg,*.png) DO XCOPY %f D:\2_FOLDER /H /C
我遇到的第一个问题是,命令没有运行,我得到了错误
参数数量无效
目录1_FOLDER中的第二个问题我还有2个文件夹X_FOLDER和Y_FOLDER,我希望for循环只能在X_FOLDER中搜索,并且只复制X_FOLDER的文件。
当我想从C:\复制时,我遇到了第二个问题,我想从for循环搜索中排除Windows文件夹。
答案 0 :(得分:0)
当您指定包含 SPACE 字符(或xcopy
,,
,{{1}等其他标记分隔符的未加引号的路径时,错误消息来自;
}, TAB 或非中断空格(ASCII =
))。
无论如何,实际上我认为没有理由使用0xFF
循环来完成手头的任务,因为for /R
具有xcopy
选项。以下是输入/EXCLUDE
时出现的帮助测试的摘录:
xcopy /?
因此,对于您的示例,请使用以下内容创建一个文本文件(我们称之为 /EXCLUDE:file1[+file2][+file3]...
Specifies a list of files containing strings. Each string
should be in a separate line in the files. When any of the
strings match any part of the absolute path of the file to be
copied, that file will be excluded from being copied. For
example, specifying a string like \obj\ or .obj will exclude
all files underneath the directory obj or all files with the
.obj extension respectively.
):
exclusions.lst
或者,如果您希望排除任何位置中名为D:\1_FOLDER\Y_FOLDER\
的每个子目录,请写:
Y_FOLDER
由于您要处理多个文件模式(\Y_FOLDER\
和*.jpg
),因此可以为每个文件模式提供*.png
命令行(让xcopy
执行通过使用适当的开关递归,而不是包裹xcopy
循环):
for /R
或者您可以在另一个文本文件中列出文件模式(我们称之为xcopy /C /H /K /S /I /EXCLUDE:exclusions.lst "D:\1_FOLDER\*.jpg" "D:\2_FOLDER"
xcopy /C /H /K /S /I /EXCLUDE:exclusions.lst "D:\1_FOLDER\*.png" "D:\2_FOLDER"
):
patterns.lst
然后,您可以使用*.jpg
*.png
循环来读取该文件,并将每个模式/行提供给for /F
命令:
xcopy
如果您想直接在命令提示符(for /F "eol=| delims=" %%P in (patterns.lst) do (
xcopy /C /H /K /S /I /EXCLUDE:exclusions.lst "D:\1_FOLDER\%%~nxP" "D:\2_FOLDER"
)
)中尝试此操作,请不要忘记将%%
替换为%
。
预计文本文件cmd
和exclusions.lst
都位于当前工作目录中。
请注意,此处显示的所有方法都不会从源中复制任何空目录。
如果您需要高级选项来指定要排除或包含某些文件的过滤器,您可能会对robocopy
command感兴趣。