批量 "if" 语句中的语法错误

Syntax error in "if" statement in batch

我遇到以下代码的语法错误。

@echo off
SETLOCAL EnableDelayedExpansion
set path=%1
set value=[%path:~-1%]
echo !value!
if !value!==[\] (
    echo success
)

if !value!==["] (
    echo success
)

这样会出现语法错误:

%1="C:\batch\test"

虽然这样效果很好:

%1=C:\batch\test

谁能告诉我为什么?

您需要使用 ^ 字符转义 "

if !value!==[^"] (
    echo success
)

否则 batch 认为您正在启动一个字符串,这会破坏您的其余代码。

(与此无关,path 已经作为系统变量存在;我建议您为您的代码使用不同的变量。)