我想使用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\
然而,它不起作用。任何人都可以更正我的代码吗?
答案 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 /?