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

标签 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

我会得到:

File not found - file*

0 File(s) copied

但是errorLevel将为0

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

最佳答案

使用通配符时,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 将覆盖 whereErrorLevel。但是,您可以像这样缩短上面的内容:

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

或者甚至像这样:

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

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

关于windows - xcopy - 复制至少一个与模式匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37724931/

相关文章:

Windows 上的 Python Unicode 文件名\x01

c++ - 带有 SetDefault() 的 wxButton 不再响应框架上的输入

windows - 如何使批处理文件将字符串作为命令运行?

windows - 如何使用 xcopy 将文件复制到不存在的目录中?

batch-file - 根据源文件夹内容批量替换特定文件前备份

linux - 构建时Docker文件非零代码100错误

mysql - 使用 mysqldump 的批处理文件

python - Django:从批处理/cron 脚本记录

c# - 复制文件和文件夹,保留 Windows 7 界面

c - 如何在默认程序中打开文件