无法使用批处理复制文件

时间:2016-05-13 19:55:43

标签: windows batch-file copy

我正在尝试使用批处理文件复制一些文件。

这不起作用:

@echo off
for /R "C:\Users\User\Documents\Folder FolderA FolderB\Folder\Folder FolderC FolderD\Folder\Folder" %%f in (*.inc) do copy %%f /R "\\10.1.10.156\c\Folder1\Folder 2\Folder3"

这有效:

@echo off
for /R "C:\Users\User\Documents" %%f in (*.inc) do copy %%f "\\10.1.10.156\c\Folder1\Folder 2\Folder3"

我还将"C:\Users\User\Documents\Folder FolderA FolderB\Folder\Folder FolderC FolderD\Folder\Folder"替换为%cd%,我收到错误FolderA was unexpected at this time,所以我觉得这与名为Folder FolderA FolderB的文件夹中的空格有关但我无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

首先,您的副本声明中有/R,不应该存在。

其次,正如@Dennis van Gils建议的那样,您需要在%%f语句中的copy变量周围加上引号。这就是原因:

在此命令中:

for /R "C:\a folder with\spaces\" %%f in (*.inc) do copy %%f "\\destination\folder"

变量%%f扩展为C:\a folder with\spaces\filename.inc。因此,当copy尝试使用它时,它会看到:

copy C:\a folder

- 然后它会因为C:\a不是有效来源并且folder不是有效目的地而窒息。所以,如果你在这个变量周围加上引号:

rem ---------------------quotes around this variable-----VVVVV
for /R "C:\a folder with\spaces\" %%f in (*.inc) do copy "%%f"  "\\destination\folder"

它将扩展为:

copy "C:\a folder with\spaces\filename.inc" "\\destination\folder"

并且应该按照您的预期工作。