在定义环境变量时(在
Windows上对我来说,可能有更一般的指导原则)
set MY_TOOL=C:\DevTools\bin\mytool.exe
如果工具位于带空格的路径上
set MY_TOOL=C:\Program Files (x86)\Foobar\bin\mytool.exe
环境变量是否已包含必要的空格?
那就是它应该是:
set MY_TOOL="C:\Program Files (x86)\Foobar\bin\mytool.exe"
而不是没有空格的上述版本?
注意:鉴于Joeys answer,我真的应该把这个问题缩小到我给出的例子.也就是说,环境变量包含一个由用户或另一个批处理脚本调用的单个(可执行/批处理)工具.
也许这些空间应该以不同方式逃脱?
我会说,在没有引号的情况下执行它并在使用变量的任何地方使用它们:
set MY_TOOL=C:\Program Files (x86)\Foobar\bin\mytool.exe "%MY_TOOL%" -someoption someargument somefile
特别是如果你让用户在某处设置值,我猜这是最安全的选项,因为它们通常不会用引号括起来而不是这样做.
如果有很多地方使用变量,您当然可以重新定义:
set MY_TOOL="%MY_TOOL%"
这让你的生活变得更有弹性.您可以选择检测是否有引号,如果不存在则添加它们以完全确定.
当你的变量只代表一个目录的路径并且你想在那里附加文件名时,那么“无引号”的东西就更重要了,否则你就会构建像
"C:\Program Files (x86)\Foobar\bin"\mytool.exe
甚至:
""C:\Program Files (x86)\Foobar\bin"\my tool with spaces.exe"
我怀疑会正确解析.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。