忽略批处理文件中的模式

时间:2016-12-06 15:38:26

标签: batch-file exception ignore

我正在处理需要将所有文件从一个文件夹复制到另一个文件夹的批处理脚本,但有一些例外。 如何忽略以“Proxy.dll”结尾的文件。

基本上,我想知道在使用xcopy时可以根据部分名称忽略文件。

这是我的剧本

xcopy C:\\WebService %InstallFolder%\ /EXCLUDE:XcopyExclude.txt /e /s /k /r /h /y /i >>Setup.log

这是XcopyExclude.txt

.config\
Properties
Obj
*Proxy.dll

由于

1 个答案:

答案 0 :(得分:0)

robocopy command提供了比/XD更智能的排除功能(切换/XFxcopy),您可以将其用于任务:

robocopy "C:\WebService" "%InstallFolder%" "*.*" /XD "*.config" "Properties" "Obj" /XF "*Proxy.dll" /E /S /FP /NJH /NJS /NS /NC /NDL /NP /LOG+:"Setup.log"

所有以/N开头的开关以及/FP开关都控制着记录输出的外观,因此它与xcopy命令非常相似。

如果您坚持使用/EXCLUDE的{​​{1}}选项:这不支持xcopy*等通配符,而只支持文字(不区分大小写)字符串。但是,您可以提前解决?中的通配符。鉴于您有一个文件*Proxy.dll,其中包含以下内容......:

XcopyExclude.txt

...(假设所有这些项目都是(部分)目录名称),您可以将此内容复制到临时文件,并在实际复制活动之前附加已解析的.config\ \Properties\ \Obj\ 部分:

*Proxy.dll

假设源目录树中有一个名为rem // Prepare exclusion list file: copy /Y "XcopyExclude.txt" "XcopyExclude.tmp" >> "XcopyExclude.tmp" ( for /R "C:\WebService" %%E in ("*Proxy.dll") do ( echo(\%%~nxE ) ) rem // Perform copying action: xcopy "C:\WebService" "%InstallFolder%" /E /S /K /R /H /Y /I /EXCLUDE:XcopyExclude.tmp >> "Setup.log" rem // Clean up temporary list file: del "XcopyExclude.tmp" 的文件,文件AnyProxy.dll的相关条目将为XcopyExclude.tmp。请注意,名为\AnyProxy.dll的项目也会被意外排除。