regex - 批处理 - 将变量与正则表达式进行比较

标签 regex batch-file if-statement comparison

我正在做一个批处理脚本,必须检查计算机上是否安装了一些程序。为此,我执行 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)

如果我更改此命令输出的正则表达式工作正常,那么我想我对正则表达式的使用不当(我已经检查过它,命令的输出没问题)

感谢四位 friend 的帮助

最佳答案

Batch/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 的比较然后使用它的返回代码(错误级别)。
(请注意,正则表达式 findstr 的支持也非常有限并且有一些怪癖,更多信息 http://ss64.com/nt/findstr.html )

关于regex - 批处理 - 将变量与正则表达式进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23169696/

相关文章:

python - 用 python 和 re 清理文本

javascript - 如何在正则表达式中从右侧跟踪字符串?

ruby - RegExp#match 只返回一个匹配项

batch-file - 如何使用 ExifTool 从文件名设置文件的 DateTimeOriginal

windows - 如何跳过批处理文件中按任意键退出exe所需的过程

php - 如何在 PHP 中将正则表达式参数传递给 preg 替换回调?

windows - @title 批处理脚本命令有什么作用?

javascript - 使用 JavaScript 进行表单验证始终为 true

实时时间到达时的 JavaScript 23 :00

javascript - 为什么我的嵌套 if 和 else 语句不起作用?