gpt4 book ai didi

batch-file - 如果变量中有空格,带括号的 "if"不起作用

转载 作者:行者123 更新时间:2023-12-03 20:48:08 24 4
gpt4 key购买 nike

为什么下面的命令没有任何问题:

set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined APP_HOME set PATH=.;%PATH%

但是如果我使用带括号的“if”会出现错误“\Path\With was unexpected at this time”

set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined APP_HOME (
set PATH=.;%PATH%
)

最佳答案

) 字符有时是特殊的,有时不是。

如果有一个事件的(,那么下一个未引用、未转义的)将关闭该 block 。

如果命令参数中没有事件的 (,则未加引号、未转义的 ) 将被简单地视为文字。

您的 PATH 变量包含 ),它会过早地关闭您的 IF block 。在您的情况下,可以通过在作业周围添加引号来解决。

set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined APP_HOME (
set "PATH=.;%PATH%"
)

但是要小心。有时 PATH 包含已引用的路径。如果 PATH 中已经有引号,则将赋值括在引号中可能会破坏赋值。

这里有一个非常简单的方法,可以在 PATH 前面加上一个值,不管当前的定义是什么。该代码假定延迟扩展最初是禁用的。

set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined temp (
setlocal enableDelayedExpansion
for /f "eol=: delims=" %%P in ("!path!") do endlocal & set "PATH=.;%%P"
)

关于batch-file - 如果变量中有空格,带括号的 "if"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com