在 windows 批次中比较带有双引号 " 的字符

compare a character with double quotes " in windows batch

我想在 windows 批处理文件中用双引号 " 比较单个字符。

@echo off
setlocal EnableDelayedExpansion
set var=before
for /f %%a in (zen.csv) do (
    set var=%%a
    echo !var:~-1!
    IF "!var:~-1!"=="""" (
        @echo found
    )
)
pause

结果如下:

0
1
"
"
"
0
1
2

如您所见,批处理没有输出 "found"。如何用双引号比较一个字符?

@echo off
setlocal EnableDelayedExpansion
set var=before
for /f %%a in (zen.csv) do (
    set var=%%a
    echo !var:~-1!
    IF !var:~-1!==^" (
        @echo found
    )
)
pause

用脱字符 ^ 转义双引号,变成 ^"。省略外部双引号进行比较。插入符号将转义许多字符,除了 % 需要加倍转义成为 %%.