在我的一个脚本中,我需要在IF
语句中使用包含括号的变量,但要么字符串缺少右括号,要么脚本过早退出* was unexpected at this time
(实际上不是星号),具体取决于场景。
例子
@echo off
SET path=%programFiles(x86)%
echo Perfect output: %path%
IF NOT "%path%" == "" (
REM Variable is defined
echo Broken output: %path%
)
pause >nul
输出
Perfect output: C:\Program Files (x86)
Broken output: C:\Program Files (x86
我认为/知道这是因为它认为右括号C:\Program Files (x86)
是语句的结尾,IF
它在语句完成之前退出echo
。
有没有一种简单的方法来解决这个问题?最好不诉诸
- 单行
IF
语句,因为我需要在其中运行多行代码, - 大量的
GOTO
s,因为它不实用, SETLOCAL EnableDelayedExpansion
并使用!path!
而不是%path%
,因为我记得在某处读到该方法在操作系统中无法始终如一地工作。
如果不是,我很乐意接受所提供的最可靠的解决方案,无论它是什么。
(这个场景没有争议。这只是一个精炼的,集中的问题示例。结构需要像这样,因为它在我的实际脚本中,原因我不会进入。它除了点,它只会混淆事情并分散实际问题的注意力。)