robocopy将选项视为文件
当我使用robocopy复制文件并使用选项/IS
覆盖(如果已存在于目标)。它将该选项视为另一个文件,如日志所示:ERROR : Invalid Parameter #4 : "C:/Program Files/Git/IS"
robocopy将选项视为文件
任何人都知道如何在覆盖目标文件的同时在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 !
[email protected] MINGW64 /c/NatLink/NatLink/MacroSystem
ROBOCOPY使用windows风格的正斜杠/
来指定命令行选项。这对于Git-bash或类似的终端来说并不合适,因为斜杠在Linux和类似环境中被解释为root
路径。
Shell正在将/something
解释为根文件夹C:\Program Files\Git\
下的文件something
,而不是命令行选项。因此,这意味着"C:\Program Files\Git\something"
不存在。
即使尝试使用帮助选项/?
也会失败,并显示类似错误。
使用linux/unix/mac标准 Robocopy允许使用破折号/连字符-opt
而不是/opt
。-
指定选项。例如robocopy -?
工作并显示使用情况信息/帮助。所以做:
robocopy "Z:\ubuntushare" "C:\Natlink\Natlink\MacroSystem" "_git.py" -IS
编辑 2016年9月19日 - 经过测试,它的工作原理
开始2个或更多的参数被视为/转义的Windows 样式开关,并将通过前导/移除和所有\ 更改为/。
- 除了如果有/ /的前导块以下,参数被认为是UNC路径和前/不 除去。
注:这只是一个小的完整列表的提取物。这是更好地阅读完整列表窗口与混帐bash shell的工作
因此,在这种情况下,解决的办法是在交换机
robocopy "Z:\ubuntushare" "C:\Natlink\Natlink\MacroSystem" "_git.py" //IS
哇。其中一些规则是*奇怪的。* –
@哈里约翰斯顿,我必须同意,但我也很高兴有人想到两个系统的共存 –
这取决于一个事实,即正斜杠增加一倍尽管robocopy接受'-'而不是'/'。当然有更通用的方法来告诉shell不要混淆命令行? –
@HarryJohnston +1不知道Robocopy明确允许它,因此工作。将编辑我的答案。所以我认为所有使用'/ opts'的windows命令都会导致这个错误?发现令人惊讶的是用'\ /'转义'''也没有效果。 – aneroid