Для части 1, findstr
является ответом. Вы можете просто использовать функцию регулярного выражения вместе с errorlevel
:
> set xxokay=ABC
> set xxbad=AB1C
> echo %xxokay%|findstr /r "^[A-Z]*$" >nul:
> echo %errorlevel%
0
> echo %xxbad%|findstr /r "^[A-Z]*$" >nul:
> echo %errorlevel%
1
В этом случае важно, чтобы у не был пробел между echo %xxokay%
и символом трубы |
, так как это приведет к выводу пробела, который не является приемлемым символы.
Для части 2 findstr
также является ответом (/i
- игнорировать регистр, который может быть тем, что вы хотите - оставьте его, если регистр должен совпадать):
> set xxruby=somewhere;c:\ruby;somewhere_else
> set xxnoruby=somewhere;somewhere_else
> echo %xxruby%|findstr /i ruby >nul:
> echo %errorlevel%
0
> echo %xxnoruby%|findstr /i ruby >nul:
> echo %errorlevel%
1
Затем вы можете использовать:
if %errorlevel%==1 goto :label
чтобы изменить поведение вашего скрипта в обоих случаях.
Например, сегмент кода для проверки ruby может выглядеть примерно так:
:ruby_check
echo %yourvar%|findstr /i ruby >nul:
if %errorlevel%==1 goto :ruby_check_not_found
:ruby_check_found
:: ruby was found
goto :ruby_check_end
:ruby_check_not_found:
:: ruby was NOT found
:ruby_check_end