批处理 - 通过 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 括号上下文中的变量时,您需要使用 !
而不是 %
来访问它
我正在处理这个从输入文件中读取列的小脚本:
@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 括号上下文中的变量时,您需要使用 !
而不是 %