
Я могу заставить его читать текстовый файл до тех пор, пока он не превратится в текстовый файл с разделителями-запятыми.
Я хотел бы прочитать две переменные в каждой строке и проверить каждую из них с помощью оператора If для другого условия. Проблема в том, что я не могу правильно прочитать переменные. Пробовал много всего, но вот что я опубликую. Тайм-ауты нужны, чтобы увидеть, что происходит:
for /f "tokens=*" %%a in (TestText.txt) do (
timeout /t 1
echo %%a is the present variabe
timeout /t 2
if %%a=="One","1" echo Match for "One","1"
timeout /t 3
if %%a=="One""1" echo Match for "One","1"
timeout /t 4
if %%a=="One" echo Match for "One"
timeout /t 5
if %%a=="1" echo Match for "1"
timeout /t 6
)
ТестовыйТекст.txt
"One","1"
"Two","2"
"Three","3"
"Four","4"
ВЫХОД:
"One","1" is the present variabe
решение1
Проблема с вашим условием в том, что вам нужно экранировать запятую ( ,
). В командной строке это делается с помощью каретки ( ^
).
Это работает:
for /f %%a in (TestText.txt) do (
if %%a=="One"^,"1" echo Match for "One","1"
)
Однако, поскольку вы используете CSV, вам может понадобиться разделить каждую строку запятыми. Это делается с помощью опции tokens=1-n delims=,
, где n
— количество значений в строке.
Отдельные значения будут сохранены в %%a
, %%b
, и т.д.:
for /f "tokens=1-2 delims=," %%a in (TestText.txt) do (
if %%a=="One" echo Match for "One"
if %%b=="1" echo Match for "1"
)