我正在尝试使用批处理文件复制一些文件。
这不起作用:
@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
的文件夹中的空格有关但我无法让它发挥作用。
答案 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"
并且应该按照您的预期工作。