Windows пакетный скрипт - сравнение строк в операторе if - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь написать пакетный скрипт Windows, который проверяет файл XML (файл iml) для поиска определенной строки,. У меня проблемы с пробелами в строке. Есть ли способ убежать или компенсировать пробелы?

for /f "tokens=*" %%a in (abcd.iml) do (
    echo %%a
    if %%a==^<orderEntry type="inheritedJdk" ^> (echo 'FOUND')
 )

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

нет необходимости в for l oop. Простой findstr намного быстрее:

 findstr /c:"<orderEntry type=\"inheritedJdk\" >" "abcd.iml" >nul && echo found || echo nope

Примечание: кавычки в строке должны быть экранированы (экранирующий символ для findstr является обратным слэсом sh)

2 голосов
/ 23 апреля 2020

Поместите %% a в кавычки, чтобы оно было похоже на «%% a». Вместо использования оператора "==" для сравнения %% a и "^" было бы лучше использовать компаратор EQU, чтобы конечный код выглядел следующим образом:

for /f "tokens=*" %%a in (abcd.iml) do (
    echo %%a
    if "%%a" EQU "<orderEntry type="inheritedJdk" >" (echo 'FOUND')
 )

Для получения дополнительной информации об EQU и другие операторы см https://ss64.com/nt/if.html или https://ss64.com/nt/equ.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...