xcopy - 复制至少一个与模式匹配的文件

时间:2016-06-09 11:38:54

标签: windows batch-file xcopy

每当xcopy找不到文件时,它会将errorLevel变量从0更改为其他内容。 在我们公司,我们有大型脚本使用xcopy复制文件,并根据此errorLevel采取措施。

它对特定文件或目录非常有效。

绝对正常:

xcopy file dir
if %errorlevel% neq 0 exit -1

但是,如果我不想指定要使用*的文件的确切名称,那么检查errorLevel将不再有效。

不起作用:

xcopy file* dir
if %errorlevel% neq 0 exit -1

我会得到:

  

找不到文件 - 文件*

     

0文件已复制

errorLevel将为0

如何在使用通配符时确保至少复制了1个文件?

1 个答案:

答案 0 :(得分:2)

xcopy命令在使用通配符时,不会将零匹配文件视为错误。

作为解决方法,您可以使用where命令检查是否至少有一个匹配项,在这种情况下,它会将ErrorLevel设置为0,但是否则1。添加开关/Q会阻止where输出任何内容,并让它只返回ErrorLevel

where /Q "file*"
if %errorlevel% neq 0 exit -1
xcopy "file*" "dir"
if %errorlevel% neq 0 exit -1

您无法对ErrorLevel进行单一检查,因为xcopy会覆盖ErrorLevel的{​​{1}}。但是,您可以像这样缩短上述内容:

where

或者甚至喜欢这样:

where /Q "file*" || exit -1
xcopy "file*" "dir" || exit -1

我已将所有文件和目录规范放在引号之间,因为这是唯一安全的方式,以防它们中的任何一个包含空格。