windows – 包含带空格的可执行路径的环境变量是否也包含必要的引号?

在定义环境变量时(在
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"

我怀疑会正确解析.

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。