Я работаю над этой лил»скрипт, который считывает столбцы из входного файла:Batch - установка переменной с помощью 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 ---------------------
}
Однако, если я запускаю его,% событие% переменный на всех этапах (даже первой, перед if "%%h"=="i"
), а также все строки входного файла является «TORLES», который определяется в последнем IF заявлении:
TORLES - i
TORLES - i
TORLES - d
TORLES - i
TORLES - d
TORLES - d
TORLES - o
TORLES - d
я делаю что-то неправильно Вот? Пробовал добавлять-удалять кавычки вокруг операторов IF, но не добился успеха.
Святого дерьма, это сработало. Можете ли вы объяснить, почему это так? Звук действительно интуитивно понятен мне. – LordZozzy
@LordZozzy - вот некоторые объяснения и примеры - http://ss64.com/nt/delayedexpansion.html. С '% ..%' значение расширяется \ заменяется во время чтения скрипта, и все в скобках взято для однострочное выражение. С задержкой расширения и '! ..!' выражение заменяет \ расширяется во время выполнения, и если есть какие-либо изменения в значении переменной, они учитываются. – npocmaka
Спасибо, это было проницательно. – LordZozzy