robocopy将选项视为文件

时间:2016-09-18 01:07:36

标签: windows shell batch-file git-bash 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

2 个答案:

答案 0 :(得分:4)

已编辑 2016/09/19 - 经过测试并且有效

来自MinGW Posix path conversion

  

以2或更多/开头的参数被视为转义Windows   样式开关并将通过领先/删除和所有\   改为/.

     
      
  • 除非在/的前导块之后有/,该参数被认为是UNC路径而前导/不是   除去。
  •   

note :这只是完整列表的 small 摘录。在windows

中使用git bash shell时,最好阅读完整列表

因此,在这种情况下,解决方案是将开关中的正斜杠加倍

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

答案 1 :(得分:3)

ROBOCOPY使用Windows样式正斜杠/来指定命令行选项。这对Git-bash或类似终端不起作用,因为斜杠在Linux和类似环境中被解释为root路径。

shell将/something解释为根文件夹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