我有一个批处理文件首先检查外部文件以查看构建的源分支然后运行if
else if
语句运行正则表达式以匹配源分支,然后确定构建的位置将部署:
@echo off
setlocal enabledelayedexpansion
set SEPARATOR=/
set filecontent=
for /f "usebackqdelims=" %%a in ("BuildBranch.txt") do (
set currentline=%%a
set filecontent=!filecontent!%SEPARATOR%!currentline!
)
echo %filecontent%
If NOT "%filecontent%"=="develop(.*)" (
echo Deploying to dev DEVELOP
) else If NOT "%filecontent%"=="^.feature(.*)" (
echo Deploying to dev FEATURE
) else If NOT "%filecontent%"=="master(.*)" (
echo Deploying to integration MASTER
) else If NOT "%filecontent%"=="^.hotfix(.*)" (
echo Deploying to integration HOTFIX
)
pause
我通过regex101网站运行了每个正则表达式,但可能仍然存在问题。我的主要问题是,无论何时运行我的批处理文件,它只会运行If statements
中的第一个。变量%filecontent%
为feature/MyNewFeature
,因此应该看到它与第一个if语句不匹配,然后继续第二个语句。我不知道这是我的正则表达式还是if statements
的问题。
答案 0 :(得分:3)
IF
不支持正则表达式匹配。但您可以尝试以下方法:
echo %filecontent% | >nul findstr /i /r /c:"develop.*" || ( echo Deploying to dev DEVELOP )
echo %filecontent% | >nul findstr /i /r /c:"^.feature.*" || ( echo Deploying to dev FEATURE )
echo %filecontent% | >nul findstr /i /r /c:"master.*" || ( echo Deploying to dev MASTER )
echo %filecontent% | >nul findstr /i /r /c:"^.hotfix.*" || ( echo Deploying to dev HOTFIX )
从那里你可以围绕findstr命令构建,因为它可以匹配一些正则表达式(不是高级的),与||
运算符一起,用于案例对于if NOT
的案例,&&
或if
运算符。{/ p>
希望它有所帮助。