Windows findstr с условием AND?
Возможно ли в одной строке без командного файла использовать findstr и возвращать 0 %errorlevel%, только если найдены все строки?
Я делаю список драгоценных камней, который перечисляет кучу драгоценных камней. Затем я хочу использовать findstr/find, чтобы убедиться, что КАЖДАЯ строка, которую я ищу, существует. Если один из них этого не делает, он должен вернуть код ошибки, отличный от 0. В настоящее время он всегда будет возвращать код ошибки 0, если найдена какая-либо из строк. Кажется, он прекрасно работает с условиями OR, но не с условиями AND. Как я могу это сделать?
C:... список драгоценных камней | findstr "A B C D"
Я хочу только код возврата 0, если он находит ВСЕ из них. Если D не существует, он все равно распечатает A B C, который дает код ошибки 0.
Есть идеи?
1 ответ
FOR %G IN (foo, bar) DO (gem list | findstr %G)
Теперь, если я смогу заставить его удерживать код ошибки для каждого возврата.
Лучший способ справиться с этим и ошибка, если одна из команд в цикле завершается неудачно:
FOR %G IN (foo, foobar) DO (gem list | findstr %G) || IF %ERRORLEVEL% == 0 exit
Тогда он всегда будет возвращать non, давая вам правильный уровень ошибки при выходе