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

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

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

根据文件这应该工作:

 /xf <FileName>[ ...] 

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

但结果是:

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

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

我猜你错过了一个子文件夹,如:

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

否则,这应该工作:

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

根据我的经验, /xf可以使用通配符来表示名称,而不是path。 我不认为这是可能的混合。

作为解决方法,您可以启动两次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 

您可以阅读有关robocopy语法的更多信息:

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