批处理 - 通过 FOR 循环中的 IF 语句设置变量 "stuck"

Batch - setting a variable via IF statement in FOR loop "stuck"

我正在处理这个从输入文件中读取列的小脚本:

@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=2,3,4,5,7,8,9,12,14" %%a IN ('type %1') do (
    set event="NULLA"
    echo %event% - %%h
    if "%%h"=="i" ( set event=FELTOLTES )
    echo %event% - %%h
    if "%%h"=="o" ( set event=LETOLTES )
    echo %event% - %%h
    if "%%h"=="d" ( set event=TORLES )
    echo %event% - %%h  
    echo ---------------------
}

但是,如果我 运行 它,所有步骤中的 %event% 变量(即使是第一个,在 if "%%h"=="i" 之前),并且输入文件的所有行都是 "TORLES",在最后一个IF语句中定义:

TORLES - i
TORLES - i
TORLES - d
TORLES - i  
TORLES - d
TORLES - d
TORLES - o
TORLES - d

我是不是做错了什么?尝试在 IF 语句周围添加或删除引号,但没有成功。

@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=2,3,4,5,7,8,9,12,14" %%a IN ('type %1') do (
    set event="NULLA"
    echo !event! - %%h
    if "%%h"=="i" ( set event=FELTOLTES )
    echo !event! - %%h
    if "%%h"=="o" ( set event=LETOLTES )
    echo !event! - %%h
    if "%%h"=="d" ( set event=TORLES )
    echo !event! - %%h

    echo ---------------------
)

当您使用延迟扩展并尝试 set/access 括号上下文中的变量时,您需要使用 ! 而不是 %

来访问它