我正在处理这个从输入文件中读取列的lil'脚本:
@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语句周围添加删除引号,但没有成功。
答案 0 :(得分:1)
@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 ---------------------
)
当您使用延迟展开并尝试在括号上下文中设置/访问变量时,您需要使用!
代替%