2

Я могу заставить его читать текстовый файл, пока он не станет текстовым файлом с разделителями-запятыми.

Я хотел бы прочитать две переменные в каждой строке и проверить каждую с оператором 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
)

TestText.txt

"One","1"
"Two","2"
"Three","3"
"Four","4"

ВЫХОД:

"One","1" is the present variabe

1 ответ1

4

Проблема с вашим состоянием в том, что вы должны экранировать запятую (,). В командной строке это делается с помощью каретки (^).

Это работает:

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"
)

Дальнейшая информация

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .