jga*_*abt 5 regex comparison if-statement batch-file
我正在做一个批处理脚本,必须检查计算机上是否安装了某些程序.为此,我执行programName --version并将输出存储在变量中.问题是当我尝试与正则表达式进行比较时(仅知道该程序是否存在于机器中).我正在尝试这个代码,但不起作用
>output.tmp node --version
<output.tmp (set /p hasNode= )
if "%hasNode%" == "[vV][0-9.]*" (echo Has node) else (echo You have to install node)
如果我更改正则表达式以使此命令的输出正常工作,那么我想我正在使用正则表达式(我已经检查过它,并且对于命令的输出没问题)
谢谢你的四个帮助人员
批处理/ cmd不直接支持正则表达式.你必须使用findstr它,例如:
echo %node% | findstr /r "[vV][0-9.]*" >nul 2>&1 && (echo contains) || (echo does not contain) 要么
echo %node% | findstr /r "[vV][0-9.]*" >nul 2>&1
if errorlevel 1 (echo does not contain) else (echo contains)
这个技巧委托比较findstr和使用返回代码(errorlevel).
(请注意,正则表达式findstr支持也非常有限,并且有一些怪癖,更多信息http://ss64.com/nt/findstr.html)