题 robocopy传输文件而不是文件夹


我正在尝试使用 robocopy 将单个文件从一个位置传输到另一个位置但是 robocopy 似乎认为我总是指定一个文件夹。这是一个例子:

robocopy "c:\transfer_this.txt" "z:\transferred.txt"

但我得到了这个错误:

2009/08/11 15:21:57 ERROR 123 (0x0000007B) Accessing Source Directory c:\transfer_this.txt\

(注意 \ 在......的最后 transfer_this.txt

但是,如果我把它当成整个文件夹:

robocopy "c:\folder" "z:\folder"

它工作但我必须转移文件夹中的所有内容。

我怎样才能传输单个文件 robocopy


90
2017-08-11 22:29




def copyFile(fromLocation,toLocation,big=False): print("copy file from " + fromLocation + " to " + toLocation) if big: iFind=fromLocation.rfind('\\') fromLocation1 = fromLocation[: (iFind+1)] fileName=fromLocation[iFind+1 :] toLocation1 = toLocation[:(toLocation.rfind('\\')+1)] strcmd="robocopy "+fromLocation1+" "+toLocation1+" "+fileName print(strcmd) os.system(strcmd) else: shutil.copy2(fromLocation,toLocation) - Gank


答案:


看到: Robocopy /?

用法:ROBOCOPY源目的地[file [file] ...] [options]

robocopy c:\folder d:\folder transfer_this.txt

116
2017-08-11 22:37



fwiw,至少在win2003上:引用目录路径似乎让它打嗝。 - samsmith
@samsmith我看到它在结束报价之前有一个\打嗝(即:ROBOCOPY“c:\ folder1 \”c:\ folder2文件不起作用但是:ROBOCOPY“c:\ folder1”c:\ folder2文件。我希望它是一个文本转义的东西 - Mike Goatly
@MikeGoatly优点。 Robocopy不喜欢尾随\。它希望您将目录命名为“名称”,并且不希望以任何方式暗示它接受除目录之外的任何内容。 - samsmith


根据维基百科关于Robocopy的文章

文件夹复印机,而不是文件复印机

Robocopy语法与标准复制命令明显不同,因为它只接受文件夹名称作为源和目标参数。文件名和外卡字符(例如 *.* 不是有效的源或目标参数。可以使用可选的filespec过滤参数选择或排除文件。 Filespecs只能引用相对于已经选择进行复制的文件夹的文件名。不支持完全限定的路径名​​。

例如,为了复制文件 foo.txt 来自目录 c:\bar 至 c:\baz,可以使用以下语法:

robocopy c:\bar c:\baz foo.txt


16
2017-08-30 23:47



有一点我注意到了。如果C:\ bar中包含任何文件夹,则添加了选项/ e。它将重新创建所有文件夹,其中没有文件。我想因为foo.txt就像一个过滤器,无法找到这些文件夹中的任何文件和你保留空文件夹。这就是创建空文件夹的原因。 - Donny V


尝试在目标之前插入一个空格,如下所示:

robocopy "c:\transfer_this.txt" "z: \this.txt" 

注意空间  在目的地“文件夹”之后 z:


1
2018-06-29 20:37



这对我不起作用,我必须遵循@ KPWINC的说明并将文件名保留在源路径之外。 - influent
这是一个巨魔的答案?尝试过并且不起作用(看起来它也不会起作用)。 - Pacerier


robocopy问:\ F:\ Dopbox“Microsoft Office.zip”/ MT:128


-4
2018-06-04 10:31



Robocopy源目标文件名 - Dale
没有解释的命令不是一个有用的答案。 - kasperd