Per la parte 1, findstr
è la risposta. Si può solo utilizzare la funzione regex con 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
E 'importante in questo caso che fare non hanno uno spazio tra il echo %xxokay%
e il carattere pipe |
, dal momento che si tradurrà in un essere uscita spazio che non è uno dei tuoi caratteri accettabili.
Da parte 2, findstr
è anche la risposta (/i
è ignorare caso che può essere ciò che si desidera - lasciare fuori se caso deve corrispondere):
> 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
È quindi possibile utilizzare:
if %errorlevel%==1 goto :label
per modificare il comportamento del copione in entrambi i casi.
Ad esempio, il segmento di codice per il controllo rubino potrebbe essere qualcosa di simile:
: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