cp -r 等效于 windows 命令提示符,没有错误代码 1

cp -r equivalent in windows command prompt without error code 1

我需要在 windows 批处理脚本中对 linux 执行相当于 cp -r 的操作。一般的解决方案似乎是 robocopy (或 xcopy which has been deprecated).

所以执行操作:

robocopy source_folder destination_folder

将 source_folder(和子项)复制到 destination_folder。如果目标文件夹不存在,它会创建它,但是,它将 return 退出代码 1。如何执行此复制操作而不收到错误代码?

(换句话说,与 cp -r 在 *nix 系统上所做的相同)。

编辑: 为了阐明 cp -r 的作用是递归复制,我想从

folder
|-subfolder_a
    |-my_file.txt

至:

folder
|-subfolder_a
    |-my_file.txt
|-subfolder_b
    |-my_file.txt

两个 my_file.txt 是相同的,这将在 *nix 上用 cp -r subfolder_a subfolder_b 完成(从 folder 中)。我尝试在 windows 上使用 robocopy subfolder_a subfolder_b 执行此操作,但得到 error_code 1。我想在没有任何错误代码的情况下执行此操作(并且不忽略错误代码)。

如果文件复制成功,Robocopy 会将 %ERRORLEVEL% 设置为 1。与是否创建目录无关。 See this list 个 Robocopy 退出代码。

作为学术练习,您可以使用 cmd /c exit /b 0 将退出代码设置回 0。如果你想把它合并到 robocopy 命令中,做这样的事情:

robocopy src dest && (echo Nothing copied) || cmd /c exit /b 0

正如 Magoo 指出的那样,xcopy 可能不会很快消失。

xcopy src dest\

returns 成功时退出代码为 0,失败时为非零。根据 Microsoft documentationxcopy returns 的退出代码如下:

Exit code Description

0 Files were copied without error.

1 No files were found to copy.

2 The user pressed CTRL+C to terminate xcopy.

4 Initialization error occurred. There is not enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command line.

5 Disk write error occurred.