如何使用 robocopy 排除具有模式的文件夹中的文件?

如何使用 robocopy 排除具有模式的文件夹中的文件?

我想排除所有匹配的文件C:\dir1\*.ext,所以我说:

robocopy C:\dir1 C:\dir2 /E /B /MIR /xf C:\dir1\*.ext

根据文档这应该有效:

/xf <FileName>[ ...]

排除与指定名称或路径匹配的文件。请注意,FileName 可以包含通配符(* 和 ?)。

但其结果是:

错误:无效参数 #16:“xyz”

我如何根据此模式排除?按目录或按文件名模式排除不够具体。

答案1

我猜你那里缺少一个子文件夹,例如:

robocopy C:\dir1 C:\dir2 /E /B /MIR /xf C:\dir1\subdir\*.ext

否则,这应该有效:

robocopy C:\dir1 C:\dir2 /E /B /MIR /xf *.ext

根据我的经验,/xf通配符只能用于名称,不能用于路径。我认为不可能混合使用。

作为一种解决方法,您可以启动robocopy两次:

robocopy C:\dir1 C:\dir2 /E /B /MIR /xd C:\dir1\subdir\
robocopy C:\dir1\subdir C:\dir2\subdir /E /B /MIR /xf *.ext

答案2

根据文档https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy

/xf <FileName>[ ...] 排除与指定名称或路径匹配的文件。请注意,FileName 可以包含通配符 (* 和 ?)。/
xd <Directory>[ ...] 排除与指定名称和路径匹配的目录。

所以这具体意味着通配符可以在 /xf 标志中使用,但不能在 /xd 标志中使用。

答案3

您可以阅读更多关于机器人复制句法 :

set _src="C:\dir1"
set _dst="C:\dir2"
set _option=/E /B /MIR
set _xf="C:\dir1\subdir\*.ext"

robocopy %_src% %_dst% %_option% %_xf%

相关内容