@echo off
findstr /N . input.txt | findstr /I ^2.*alive$ > NUL
IF %ERRORLEVEL% EQU 0 (Echo Hi) ELSE (Echo Hello)
pause
Esse lote lê seu arquivo de texto com a opção /N , que coloca um número na frente de cada linha, como:
1:This is a test,
2:and I am alive
3:Not?
O novo texto é canalizado para o segundo findstr , que usa o padrão RegEx ^2.*alive$ para encontrar uma linha que começa com 2 e termina com alive . Essa foi a parte difícil.
Como findstr define seu nível de erro como 0 se pelo menos uma correspondência for encontrada, podemos usar uma instrução IF simples para ecoar "Hi" ou "Hello".
Lote em detalhes
-
findstrprocura por strings em arquivos -
/Ncoloca um número de linha na frente de cada linha -
.é um curinga para qualquer caractere único. Ele diz findstr para procurar por tudo -
|é o comando do canal. A saída do primeiro comando é passada como entrada para o segundo -
/Idiz a findstr para pesquisar sem distinção entre maiúsculas e minúsculas, pelo que "Alive" e "alive" são ambos encontrados -
^é um termo RegEx e representa uma linha que começa -
.*é um termo RegEx e representa um número indefinido de caracteres -
$é um termo RegEx e representa uma linha que termina -
> NULoculta a saída findstr para que a linha correspondente não seja exibida na janela do CMD -
IF condition (command) ELSE (command)é uma condição IF simples -
%ERRORLEVEL% EQU 0é o código de saída do findstr. "EQU" significa "equel"
Editar ( exemplo tirado do comentário do OP abaixo)

- Seu"Vivo" não está na segunda linha. É o quinto
-
Depois de "Alive", existem três espaços no seu exemplo, por isso
alive$não corresponde aAltere
^2.*alive$para5.*alive. Ou melhor ainda^5.* Alive $
Observe os espaços.