加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

regex – Batch – 将变量与正则表达式进行比较

发布时间:2020-12-14 05:56:03 所属栏目:百科 来源:网络整理
导读:我正在做一个批处理脚本,必须检查计算机上是否安装了某些程序.为此,我执行programName –version并将输出存储在变量中.问题是当我尝试与正则表达式进行比较时(仅知道该程序是否存在于机器中).我正在尝试这个代码,但不起作用 output.tmp node --versionoutput
我正在做一个批处理脚本,必须检查计算机上是否安装了某些程序.为此,我执行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不直接支持正则表达式.您必须使用findstrfor,例如:

echo%node%| findstr / r“[vV] [0-9.] *”> nul 2>& 1&& (echo contains)|| (回声不包含)或

echo%node%| findstr / r“[vV] [0-9.] *”> nul 2>& 1
如果errorlevel 1(echo不包含)else(echo包含)

这个技巧将比较委托给findstr,而不是使用返回代码(errorlevel).
(请注意,regexes findstr支持也非常有限并且有一些怪癖,更多信息http://ss64.com/nt/findstr.html)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读