gpt4 book ai didi

windows - 在批处理文件的 if/else 语句中使用 ")"

转载 作者:可可西里 更新时间:2023-11-01 09:57:48 24 4
gpt4 key购买 nike

这是无法按预期工作的代码段:

set MYMACHINENAME=BuildmasterW32

if "%MYMACHINENAME%"=="BuildmasterW32" (
set PROGRAMFILESDIR=D:\Program Files
set WISEDIR=D:\Program Files\Wise Installation Studio\WiseScript Package Editor
)

if "%MYMACHINENAME%"=="BuildmasterW64" (
set PROGRAMFILESDIR=C:\Program Files (x86)
set WISEDIR="C:\Program Files (x86)\Wise Installation Studio\WiseScript Package Editor"
)

set WISEDIR
rem we see `C:\Program Files (x86)\Wise Installation Studio\WiseScript Package Editor` at this point
pause

我希望看到 D:\Program Files... 值。

原因是上一行中设置 PROGRAMFILESDIR 的右括号关闭了条件语句并且 WISEDIR 的值被覆盖。

如果我用双引号将 PROGRAMFILESDIR 的值括起来,代码可以正常工作,但是 PROGRAMFILESDIR 变得等于 "C:\Program Files (x86)"(引号转到变量)并且不是我需要的 C:\Program Files (x86)。这不是我想要的,因为 PROGRAMFILESDIR 是一个前缀,稍后会向其添加相对路径,因此值中不能有引号。

我试图在 PROGRAMFILESDIR 分配行中的 ) 之前添加反斜杠,但这似乎没有任何效果。

我提供的代码片段中是否有任何解决方案,或者我必须重写它以使用 goto 而不是 if/else ?

最佳答案

不是引用值,而是引用赋值操作

set "MYMACHINENAME=BuildmasterW32"

if "%MYMACHINENAME%"=="BuildmasterW32" (
set "PROGRAMFILESDIR=D:\Program Files"
set "WISEDIR=D:\Program Files\Wise Installation Studio\WiseScript Package Editor"
)

if "%MYMACHINENAME%"=="BuildmasterW64" (
set "PROGRAMFILESDIR=C:\Program Files (x86)"
set "WISEDIR=C:\Program Files (x86)\Wise Installation Studio\WiseScript Package Editor"
)

set WISEDIR
pause

关于windows - 在批处理文件的 if/else 语句中使用 ")",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42042895/

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