带空格的批处理路径变量 - 如何转义双引号?

时间:2014-10-23 23:08:04

标签: windows variables batch-file

我正在使用此目录设置变量

C:\My dir\Sub dir\Folder with a lot of spaces\file.html
像这样:

SET location="C:\My dir\Sub dir\Folder with a lot of spaces\file.html"

问题是,当我回显%location%时,它带有两个双引号。我试图删除使用它:

set location=%location:"=\"%

但它不起作用。我搜索了很多,我找不到一个简单而简单的解决方案。我正在使用Windows 8。

3 个答案:

答案 0 :(得分:2)

一个简单而简单的解决方案是存储没有引号的路径,如下所示:

SET "location=C:\My dir\Sub dir\Folder with a lot of spaces\file.html"

这样,该值将不带引号存储,SET语句仍将受到保护,不受某些特殊字符的影响。然后,您可以将%location%括在引号中,也可以根据需要省略引号。例如,如果您使用该值作为某个命令的参数,则可能需要在其周围加上引号:

somecommand "%location%" …
…

如果您只需要输出路径,那么引号可能是不必要的 - 并且很容易将它们排除在外:

ECHO Location: %location%

请注意,如果路径包含具有特殊含义的字符,例如&,则在没有引号的情况下ECHOing路径将导致在%评估中解释此类字符。为避免这种情况,您可以暂时启用并使用延迟扩展:

SETLOCAL EnableDelayedExpansion
ECHO Location: !location!
ENDLOCAL
…

答案 1 :(得分:1)

使用set "location=C:\My dir\Sub dir\Folder with a lot of spaces\file.html"保留空格,但不加双引号。

答案 2 :(得分:0)

请勿在{{1​​}}中使用引号。

稍后当您使用该变量时,请在其周围加上引号,例如

Set

这也删除了引号

type "%location%"

你认为我用反斜杠和引号替换引号,不是很有用。

为什么甚至把它变成一个变量?