Windows 的复制命令可以处理多个文件吗?

Kev*_*nko 19 windows command-line

在 Unix 系统上,此命令将两个文件复制到名为 的文件夹中folder

cp foo bar folder
Run Code Online (Sandbox Code Playgroud)

在 Windows 上,这不是有效的命令:

copy foo bar folder
The syntax of the command is incorrect.
Run Code Online (Sandbox Code Playgroud)

我可以在 Windows 上使用其内置工具在一个命令中执行此操作吗?

ste*_*ert 11

for %I in (file1.txt file2.txt file3.txt) do copy %I c:\somedir\
Run Code Online (Sandbox Code Playgroud)

您可以在批处理文件中或直接从命令行使用它。不像 *nix 那样干净,但它有效。

  • 您需要将第二个 %I 用双引号括起来,作为处理文件名中空格的最佳做法 (2认同)
  • 在批处理文件中,您必须在两次出现时使用双百分号,即“%%I”而不是“%I”。 (2认同)

Edw*_*rey 8

Windows 包括内置的robocopy,它可以从单个命令复制多个文件:

robocopy a\source\folder a\dest\folder file1.docx file2.exe
Run Code Online (Sandbox Code Playgroud)


Art*_*cca 6

值得注意的是,如果您有一个通配符表达式而不是一个明确的文件列表,那么 COPY 会将所有文件复制到目标目录:

COPY srcdir\* destdir\
COPY *sy?.* anotherdestdir\
Run Code Online (Sandbox Code Playgroud)

任何来自 *nix 背景的人都会发现特别令人困惑的是,虽然显式列表有效,而显式列表却没有,因为在类 Unix 的 shell 中,它们与程序无法区分——shell 扩展了任何通配符,因此程序最终以一个显式的文件列表。这在此处不适用,因为 Windows 命令外壳将通配符直接传递给程序,并且由它们来进行扩展。(另外 COPY 是 shell 中的内置命令,而不是像 Linux 上的 cp 这样的外部程序,因此原则上它可能会违反有关命令行参数的通常规则,但这实际上并不适用于此。)