Для совместимости и простоты использования часто лучше использовать FIND для этого.
Вы также должны учитывать, хотите ли вы сопоставить регистр с учетом регистра или без учета регистра.
Метод с78 баллов (я думаю, что я имел в виду пост Паксдиабло) будут соответствовать только регистру, поэтому вы должны поставить отдельную проверку для каждого варианта регистра для каждой возможной итерации, которую вы можете захотеть найти.
(Какая боль!Всего 3 буквы, что означает 9 различных тестов для выполнения проверки!)
Кроме того, во многих случаях предпочтительнее сопоставлять выходные данные команды, переменную в цикле или значение переменной-указателя вВаша партия / CMD не так просты.
По этим причинам это предпочтительная альтернативная методология:
Использование: Найти [/ I] [/ V] "Соответствующие символы"
[/ I] (без учета регистра) [/ V] (НЕ ДОЛЖНО содержать символы)
как одна строка:
ECHO.%Variable% | FIND /I "ABC">Nul && ( Echo.Found "ABC" ) || ( Echo.Did not find "ABC" )
многострочный:
ECHO.%Variable%| FIND /I "ABC">Nul && (
Echo.Found "ABC"
) || (
Echo.Did not find "ABC"
)
как мужчиныЭто хорошо для вещей, которые не входят в переменные, которые также допускают подстановку строк:
FOR %A IN (oihu AljB lojkAbCk) DO ( ECHO.%~A| FIND /I "ABC">Nul && ( Echo.Found "ABC" ) || ( Echo.Did not find "ABC" ) )
Вывод из команды:
NLTest | FIND /I "ABC">Nul && ( Echo.Found "ABC" ) || ( Echo.Did not find "ABC" )
Как видите, это лучший способобрабатывать чек по нескольким причинам.