HOWTO · Batch

在批处理中 XCOPY 覆盖

本教程讲解如何在批处理中使用 XCOPY 覆盖现有文件,包括如何无提示地覆盖所有文件。

本页内容

Xcopy 是一个命令行实用程序,用于将一个或多个文件或目录(包括子目录)从一个位置复制到另一个位置。它与 copy 命令类似,但功能更强大,因为它可以将整个目录从一个位置复制到另一个位置。

它功能强大,甚至可以复制驱动器。Xcopy 是一个快速命令,可以复制文件和文件夹、带提示或不带提示地覆盖现有文件、根据名称、路径或扩展名排除文件、识别已更新的文件等。

从 Windows 98 开始,几乎所有 Windows 版本都支持它。它可以作为 DOS 命令在 MS-DOS 中使用 xcopy。

xcopy 命令的语法是:

xcopy source [destination] [switches]
  1. source - 要复制的文件的位置和名称。它必须包括文件或目录的驱动器和路径。
  2. destination - 要复制的文件的目标。它可以是驱动器、目录或文件名。
  3. switches - xcopy 命令提供的选项。可以通过在命令提示符窗口中运行 xcopy /? 来查看它们。

还有其他几个与 xcopy 类似的命令,有些甚至比它更强大,例如 robocopy、rsync、teracopy 等。但是,我们在本文中将坚持使用 xcopy。

本教程将讲解在使用 xcopy 命令复制文件时,如何在不提示的情况下覆盖目标中的所有文件。

在批处理中将文件复制到新文件夹

要将文件从一个位置复制到另一个位置,请执行以下命令。

xcopy C:\testfolder D:\testfolder /i /s

copy files using xcopy command

  1. /s - 复制要复制的文件夹中的目录、子目录和文件,除非它们为空。
  2. /i - 强制 xcopy 假定目标是一个目录,并创建一个新目录。如果不使用它,系统会提示你输入目标是文件还是目录。

要仅复制目录树而不复制文件,即目录结构,请执行以下命令。

xcopy C:\testfolder D:\testfolder /t /e

copy directories using xcopy command

  1. /t - 复制目录结构,不包括文件。
  2. /e - 复制所有子目录,即使它们是空的。它与 /t 和 /s 选项一起使用。

输出:

copy directories using xcopy command(output)

如上所示,仅复制了目录,而没有复制文件。

在批处理中通过覆盖现有文件来复制文件

要在复制时覆盖现有文件,请执行以下命令。

xcopy C:\testfolder D:\testfolder /i /s

overwrite existing files(with prompt)

当目标中已经包含同名文件时,xcopy 会停下来询问如何处理该文件:

Overwrite D:\testfolder\MyFile.txt (Yes/No/All)?

如上图所示,它正在询问是覆盖现有文件还是所有文件。回答 All 会将覆盖应用于其余每个文件。当我们将许多文件复制到现有文件上而不回答 All 时,它将为每个同名文件显示一个提示。

为每个文件确认这一点太耗时了。为了避免这种情况,我们需要将 /y 选项与上述命令一起使用。

在批处理中无提示地覆盖所有文件来复制文件

执行以下命令,在不提示覆盖现有文件的情况下复制文件。

xcopy C:\testfolder D:\testfolder /i /s /y

overwrite existing files(without prompt)

/y - 不显示确认是否覆盖目标中现有文件的提示,因此每个现有文件都会被自动覆盖。

在批处理中通过网络复制文件

xcopy C:\Videos "\\server\media\videos" /s /i /z /w
  1. /s - 复制要复制的文件夹中的目录、子目录和文件,除非它们为空。
  2. /i - 强制 xcopy 假定目标是一个目录,并创建一个新目录。如果不使用它,系统会提示你输入目标是文件还是目录。
  3. /z - 以可重新启动模式通过网络复制文件,即,如果在复制某个文件时连接丢失,则在连接恢复时该文件的复制将继续。它还显示完成百分比。
  4. /w - 显示消息 Press any key to begin copying file(s),并在复制过程开始之前等待你的响应。

因此,我们讨论了如何在复制许多文件时不显示提示就覆盖所有现有文件,即在不为每个文件显示提示的情况下覆盖所有文件。

xcopy 命令还提供了许多其他选项;你可以通过在命令提示符中运行 xcopy /? 来查看它们。请注意,Microsoft 已弃用 xcopy,并建议在当前 Windows 版本的新脚本中使用 robocopy,但 xcopy 仍然可用,并在现有批处理文件中广泛使用。