首页 > 解决方案 > 引用可能以反斜杠结尾的 Windows 批处理参数

问题描述

我需要在 Windows 10 批处理文件中引用任意参数,当它们以反斜杠结尾时我遇到了问题。

假设我想调用 Robocopy 来复制*.foo文件A:\B:\如下所示:

robocopy A:\ B:\ *.foo

但实际上我得到A:\了一个论点(假设我使用%~1,我不知道它是否包含空格,所以我引用它:

robocopy "%SOURCE%" B:\ *.foo

不幸的是,如果%SOURCE%以反斜杠结尾,则最后一个\被视为转义字符,转义".

robocopy "A:\" B:\ *.foo

所以 Windows 认为第一个参数是"A:" B:\ *.foo.

如何关闭\"作为转义序列的解释?

标签: windowsbatch-file

解决方案


这很简单!您需要转义转义字符!当您使用\\代替时\,第一个反斜杠会转义第二个反斜杠,并且不会再转义。

所以,在运行你的命令时,你应该使用这个:

<command> "this\is\a\path\\" "\this\is\another\path\\"

robocopy即使您不以反斜杠结束路径,它也毫无价值。所以你也可以完全使用这个:

robocopy "this\is\a\path" "this\is\another\path" <args>

如果您不知道路径是否以反斜杠结尾(例如,如果您从用户那里获取),您可以使用此命令转义路径中的所有反斜杠:

%SOURCE%=%SOURCE:\=\\% 

之后,您可以使用%SOURCE%作为参数正常运行 robocopy,即使它以反斜杠结尾!


推荐阅读