【发布时间】:2019-04-29 15:04:29
【问题描述】:
我有一个批处理文件,它扫描 dir 中的 .ips 文件并将它们上传到 unc 路径,但是,我想从上传中排除特定名称。
例子:
CoreTime*.ips
UIKit*.ips
proactive*.ips
JetsamEvent*.ips
以下方法可行,但我无法正确使用 forfiles cmd,也无法让 robocopy 执行此操作。
grep -v "CoreTime\|UIKit\|proactive\|JetsamEvent"
批处理文件:
Echo Checking %Logs% for .ips files
PushD "%Logs%" &&(
forfiles -s -m *.ips -d -30 -c "cmd /c xcopy /C /Y @path \\UNC_Path\ips\%username%"
) & PopD
【问题讨论】:
-
XCopy有一个/EXCLUDE:file选项,其中file包含一个排除列表,每行一个。但是,您实际上并不需要ForFiles,因为RoboCopy具有/MINAGE:选项和/XF选项,因此应该能够更有效地执行此任务。请打开命令提示符窗口,输入robocopy /?并阅读输出使用信息。 -
我的理解是,排除文件的名称中不能有通配符,例如 Filename_something.ips > filename*.ips
-
XCopy的/Exclude选项file中的列表项是通配符,同样RoboCopy的/XF项。创建一个小型测试环境并尝试它们看看会发生什么对您来说应该不会太难! -
N. B.:
popd应该在pushd ... && (后面的括号)内,以确保前者失败时不会执行...
标签: batch-file cmd