如何检查字符串是否包含单词批处理文件

我想创建一个简单的程序来检查命令的输出是否包含错误,请停止下一个命令。

这是我尝试的

@ECHO OFF

SET list=fatal
SET list=%list%;error 
SET list=%list%;conflict 
SET list=%list%;failed

git pull origin master > temp.txt

for %%cWord in (%list%) do (

    SET /P vPull=<temp.txt

    IF NOT x%vPull:%%cWord=%==x%vPull%
    ECHO please fix the error then try to pull again!

)

PAUSE > nul

上面的代码执行git pull origin master,然后检查命令的输出是否包含list字符串,如果是,程序将停止执行下一条命令。

我尝试上面的代码,但打开后程序退出。

bilong1988 回答:如何检查字符串是否包含单词批处理文件

似乎您想要这样的东西:

@echo off
for /f "tokens=1,2*delims=:" %%i in ('git pull origin master 2^>^&1') do (
    set rtncode=%%i:%%j
    if /i "%%i"=="fatal" echo %%i:%%j & goto :end
    if /i "%%i"=="error" echo %%i:%%j & goto :end
    if /i "%%i"=="conflict" echo %%i:%%j & goto :end
    if /i "%%i"=="failed" echo %%i:%%j & goto :end
)
echo %rtncode%
echo When you get here,you did not experience the errors above,so code can go here
:end
Pause

解释代码。 for /f使用定界符:将字符串分为两部分,然后将:之前的所有内容分配给第一个元变量%%i,并将:之后的所有内容分配给到%%j,因为我们专门说过要使用令牌12

这里的重要部分是命令后的2>^&1位。这指定我们应该将标准错误重定向到标准输出。这允许将错误消息以及正常的成功消息分配给元变量。然后,我们只将每个分配的元变量%%i与硬编码的文本fatalerror等进行匹配,这样匹配最终会变成这样。元变量%%i已分配了值,假设fatal

 if /i "fatal"=="fatal"

以上匹配,因此它将执行条件

echo %%i:%%j & goto :end

这将打印存储的错误消息并退出循环并绕过:end

之前的所有命令

您可以打开cmd.exe并运行以下命令以获得更多帮助:

for /?
if /?

我添加了set设置%rtncode%,它将为输出分配任何输出,如果您不匹配循环中的任何错误,则会显示该输出。

,

我可能误解了您的问题,但是似乎只需要以下未经测试的单行即可:

@git pull origin master 2>&1 1>CON|Find /V ""&&(Echo Ending script. Please fix the error then retry.&Pause>NUL&GoTo :EOF)||Pause
本文链接:https://www.f2er.com/3023015.html

大家都在问