批量 "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
已经作为系统变量存在;我建议您为您的代码使用不同的变量。)
我遇到以下代码的语法错误。
@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
已经作为系统变量存在;我建议您为您的代码使用不同的变量。)