robocopy将选项视为文件

当我使用robocopy复制文件并使用选项/IS覆盖(如果已经存在于目的地)。 它将该选项视为日志中可以看到的另一个文件: ERROR : Invalid Parameter #4 : "C:/Program Files/Git/IS"

任何人都知道如何在覆盖目标文件的同时在Windows中复制文件。

 $ robocopy "Z:\ubuntushare" "C:\Natlink\Natlink\MacroSystem" "_git.py" /IS ROBOCOPY :: Robust File Copy for Windows Started : Sat Sep 17 18:00:05 2016 Source - Z:\ubuntushare\ Dest - C:\Natlink\Natlink\MacroSystem\ Files : _git.py Options : /COPY:DAT /R:1000000 /W:30 ------------------------------------------------------------------------------ ERROR : Invalid Parameter #4 : "C:/Program Files/Git/IS" Simple Usage :: ROBOCOPY source destination /MIR source :: Source Directory (drive:\path or \\server\share\path). destination :: Destination Dir (drive:\path or \\server\share\path). /MIR :: Mirror a complete directory tree. For more usage information run ROBOCOPY /? **** /MIR can DELETE files as well as copy them ! pri@pri-PC MINGW64 /c/NatLink/NatLink/MacroSystem 

编辑 2016/09/19 – 测试和它的作品

从MinGW Posix路径转换

一个以2或更多/开头的参数被认为是一个逃逸的Windows风格的开关,并将通过前导/删除和所有\改为/。

  • 除了如果/之后有一个/后面的参数,这个参数被认为是一个UNC路径,并且前导/不会被删除。

注意 :这只是完整列表的一部分。 在Windows中使用git bash shell时,最好阅读完整列表

所以,在这种情况下,解决方案是将交换机中的正斜杠加倍

 robocopy "Z:\ubuntushare" "C:\Natlink\Natlink\MacroSystem" "_git.py" //IS 

ROBOCOPY使用Windows风格的正斜杠/来指定命令行选项。 这对于Git-bash或类似的终端来说并不合适,因为斜杠在Linux和类似环境中被解释为root路径。

shell将/something解释为根文件夹C:\Program Files\Git\下的文件,而不是命令行选项。 因此,这意味着"C:\Program Files\Git\something"不存在。

即使试图使用帮助选项/? 失败与类似的错误。

使用linux / unix / mac标准-opt而不是/opt Robocopy允许使用短划线/连字符来指定选项。 例如robocopy -? 工作并显示使用情况信息/帮助。 那么:

 robocopy "Z:\ubuntushare" "C:\Natlink\Natlink\MacroSystem" "_git.py" -IS