windows - 引用可能以反斜杠结尾的 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
.
如何关闭\"
作为转义序列的解释?
解决方案
这很简单!您需要转义转义字符!当您使用\\
代替时\
,第一个反斜杠会转义第二个反斜杠,并且不会再转义。
所以,在运行你的命令时,你应该使用这个:
<command> "this\is\a\path\\" "\this\is\another\path\\"
robocopy
即使您不以反斜杠结束路径,它也毫无价值。所以你也可以完全使用这个:
robocopy "this\is\a\path" "this\is\another\path" <args>
如果您不知道路径是否以反斜杠结尾(例如,如果您从用户那里获取),您可以使用此命令转义路径中的所有反斜杠:
%SOURCE%=%SOURCE:\=\\%
之后,您可以使用%SOURCE%
作为参数正常运行 robocopy,即使它以反斜杠结尾!
推荐阅读
- r - 在 Shiny 中组合日期滑块、单选按钮和地图
- c# - DateTime 的刻度的格式字符串是什么?
- javascript - Could anyone make me understand what does the code mean in vue.js
- loops - 在 Clojure 中使用递归构建字符串
- java - JMeter 从路径参数的开头删除正斜杠
- android - 使用 Retrofit 和 GsonConverterFactory 将 JsonArray 转换为 Kotlin 数据类(预期为 BEGIN_OBJECT 但为 BEGIN_ARRAY)
- firefox - 如何实现对 Firefox 48 及更高版本的 Protractor 支持?
- python - 使用标准标记进行 2D 彩色绘图的替代方法?
- excel - 通过用户表单查找具有特定值的行并复制/粘贴到另一张表
- sql - SQL SELECT 如何在两列之间查找子字符串编号?