在bat文件中复制多个文件

时间:2018-02-17 03:33:06

标签: batch-file cmd copy

我想使用bat文件复制多个文件。我已经成功完成了这个脚本。

xcopy /-y "C:\Users\Robin\Desktop\bat\test1.csv" "C:\Users\Robin\Desktop\"

xcopy /-y "C:\Users\Robin\Desktop\bat\test2.csv" "C:\Users\Robin\Desktop\"

我尝试在一行中完成,所以我使用这个脚本

for %I in (C:\Users\Robin\Desktop\bat\test1.csv C:\Users\Robin\Desktop\bat\test2.csv) do copy %I C:\Users\Robin\Desktop\
然而,它不起作用。任何人都可以更正我的代码吗?

2 个答案:

答案 0 :(得分:1)

您需要使用其他%转义%

单个%用于表示命令行参数。

for %%I in (C:\Users\Robin\Desktop\bat\test1.csv C:\Users\Robin\Desktop\bat\test2.csv) do copy %%I C:\Users\Robin\Desktop\

如果您想知道发生了什么,请暂时将pause添加到批处理文件中,以便在窗口关闭之前查看它正在执行的操作。

答案 1 :(得分:1)

您的问题是多个文件,但只显示两个。

以下是一些例子。

你可能只是逃避:

Copy /-Y "%UserProfile%\Desktop\bat\test*.csv" "%UserProfile%\Desktop"

如果你想在循环中使用通配符。

从批处理文件:

@For %%A In ("%UserProfile%\Desktop\bat\test*.csv") Do @Copy /-Y "%%A" "%UserProfile%\Desktop"

或者从命令提示符:

For %A In ("%UserProfile%\Desktop\bat\test*.csv") Do @Copy /-Y "%A" "%UserProfile%\Desktop"

在带有通配符的循环中,仅将其限制为指定的名称。

从批处理文件:

@For %%A In (1 2) Do @Copy /-Y "%UserProfile%\Desktop\bat\test%%A.csv" "%UserProfile%\Desktop"

或者从命令提示符:

For %A In (1 2) Do @Copy /-Y "%UserProfile%\Desktop\bat\test%A.csv" "%UserProfile%\Desktop"

在所有情况下,您仍然可以使用XCopy,但由于您没有使用任何功能,因此不需要它。 此外,它早于Windows Vista取代RoboCopy

有关使用命令的信息,请在命令提示符处输入其名称,并带有问号选项,例如Copy /?