robocopy传输文件而不是文件夹


99

我试图用来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


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)
甘克

Answers:


129

看到: Robocopy /?

用法:ROBOCOPY源目标[文件[文件] ...] [选项]

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

首先,至少在win2003上:引用目录路径似乎使它有些打.。
samsmith 2013年

1
@samsmith我在收尾引号前有一个\时,会打h(即:ROBOCOPY“ c:\ folder1 \” c:\ folder2文件不起作用,但:ROBOCOPY“ c:\ folder1” c:\ folder2我希望这是文本转义的内容
Mike Goatly 2015年

1
@MikeGoatly非常好。Robocopy不喜欢尾随\。它希望您将目录命名为“名称”,并且不希望以任何方式暗示它接受目录以外的任何内容。
samsmith

19

根据Robocopy上的Wikipedia文章

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

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

例如,为了将文件foo.txt从目录复制c:\barc:\baz,可以使用以下语法:

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


我注意到的一件事。如果C:\ bar中有任何文件夹,并且已添加选项/ e。它将重新创建所有没有文件的文件夹。我猜因为foo.txt就像一个过滤器一样,在那些文件夹和保持空文件夹中找不到任何文件。这就是为什么创建空文件夹的原因。
Donny V

1

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

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

注意目标“文件夹”之后的空格z:


3
这对我不起作用,我必须遵循@KPWINC的说明并将文件名保留在源路径之外。
2015年

3
这是一个巨魔的答案吗?尝试过并且不起作用(似乎也不起作用)。
Pacerier '16

-4

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


Robocopy源目标文件名
Dale

6
没有解释的命令不是有用的答案。
kasperd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.