HOWTO · Batch
在批处理中 XCOPY 覆盖
本教程讲解如何在批处理中使用 XCOPY 覆盖现有文件,包括如何无提示地覆盖所有文件。
本页内容
Xcopy 是一个命令行实用程序,用于将一个或多个文件或目录(包括子目录)从一个位置复制到另一个位置。它与 copy 命令类似,但功能更强大,因为它可以将整个目录从一个位置复制到另一个位置。
它功能强大,甚至可以复制驱动器。Xcopy 是一个快速命令,可以复制文件和文件夹、带提示或不带提示地覆盖现有文件、根据名称、路径或扩展名排除文件、识别已更新的文件等。
从 Windows 98 开始,几乎所有 Windows 版本都支持它。它可以作为 DOS 命令在 MS-DOS 中使用 xcopy。
xcopy 命令的语法是:
xcopy source [destination] [switches]
source- 要复制的文件的位置和名称。它必须包括文件或目录的驱动器和路径。destination- 要复制的文件的目标。它可以是驱动器、目录或文件名。switches-xcopy命令提供的选项。可以通过在命令提示符窗口中运行xcopy /?来查看它们。
还有其他几个与 xcopy 类似的命令,有些甚至比它更强大,例如 robocopy、rsync、teracopy 等。但是,我们在本文中将坚持使用 xcopy。
本教程将讲解在使用 xcopy 命令复制文件时,如何在不提示的情况下覆盖目标中的所有文件。
在批处理中将文件复制到新文件夹
要将文件从一个位置复制到另一个位置,请执行以下命令。
xcopy C:\testfolder D:\testfolder /i /s
/s- 复制要复制的文件夹中的目录、子目录和文件,除非它们为空。/i- 强制xcopy假定目标是一个目录,并创建一个新目录。如果不使用它,系统会提示你输入目标是文件还是目录。
要仅复制目录树而不复制文件,即目录结构,请执行以下命令。
xcopy C:\testfolder D:\testfolder /t /e
/t- 复制目录结构,不包括文件。/e- 复制所有子目录,即使它们是空的。它与/t和/s选项一起使用。
输出:
如上所示,仅复制了目录,而没有复制文件。
在批处理中通过覆盖现有文件来复制文件
要在复制时覆盖现有文件,请执行以下命令。
xcopy C:\testfolder D:\testfolder /i /s
当目标中已经包含同名文件时,xcopy 会停下来询问如何处理该文件:
Overwrite D:\testfolder\MyFile.txt (Yes/No/All)?
如上图所示,它正在询问是覆盖现有文件还是所有文件。回答 All 会将覆盖应用于其余每个文件。当我们将许多文件复制到现有文件上而不回答 All 时,它将为每个同名文件显示一个提示。
为每个文件确认这一点太耗时了。为了避免这种情况,我们需要将 /y 选项与上述命令一起使用。
在批处理中无提示地覆盖所有文件来复制文件
执行以下命令,在不提示覆盖现有文件的情况下复制文件。
xcopy C:\testfolder D:\testfolder /i /s /y
/y - 不显示确认是否覆盖目标中现有文件的提示,因此每个现有文件都会被自动覆盖。
在批处理中通过网络复制文件
xcopy C:\Videos "\\server\media\videos" /s /i /z /w
/s- 复制要复制的文件夹中的目录、子目录和文件,除非它们为空。/i- 强制xcopy假定目标是一个目录,并创建一个新目录。如果不使用它,系统会提示你输入目标是文件还是目录。/z- 以可重新启动模式通过网络复制文件,即,如果在复制某个文件时连接丢失,则在连接恢复时该文件的复制将继续。它还显示完成百分比。/w- 显示消息Press any key to begin copying file(s),并在复制过程开始之前等待你的响应。
因此,我们讨论了如何在复制许多文件时不显示提示就覆盖所有现有文件,即在不为每个文件显示提示的情况下覆盖所有文件。
xcopy 命令还提供了许多其他选项;你可以通过在命令提示符中运行 xcopy /? 来查看它们。请注意,Microsoft 已弃用 xcopy,并建议在当前 Windows 版本的新脚本中使用 robocopy,但 xcopy 仍然可用,并在现有批处理文件中广泛使用。