Qual é o comando para verificar se os resultados de um comando mencionam OK?

2

Tudo bem, então eu estava brincando com a alteração do tamanho da MTU e queria criar um arquivo em lotes para abaixá-lo automaticamente e depois aumentá-lo mais tarde.
Isso provavelmente é simples, mas eu não consigo entender. O ponto é, existe uma maneira de executar um comando, que normalmente seria ecoado "ok", mas verifique se ele diz ok? E se ele não diz ok então, para terminar o resto do arquivo de correr e sair.
O comando que estou usando é netsh interface ipv4 set subinterface "Local Area Connection" mtu=386 store=persistent , que, como mencionei acima, imprime um OK. Eu só quero verificar se ele foi executado corretamente, e se não, então fazer

por Manuel 12.06.2012 / 05:28

2 respostas

2

Se netsh for bem-sucedido, retornará um errorlevel de 0 (assim como a maioria dos utilitários de linha de comando), essencialmente significando "No error".

Portanto, você deve poder usar a linha de comando if e errorlevel para realizar a verificação em um arquivo em lotes. Algo como:

@echo off
netsh interface ipv4 set subinterface "Local Area Connection" mtu=386 store=persistent
if errorlevel 0 goto END

:ERRORHANDLER
echo Error Detected - do stuff to fix it.
goto END

:END
echo Done!
    
por 12.06.2012 / 06:31
0

A resposta simples é canalizar a saída através de 'grep' e testar a saída de 'grep':

netsh interface ipv4 set subinterface "Local Area Connection" mtu=386 store=persistent | grep OK || exit 1

Normalmente, se houver um erro, um programa também retornará um código de saída diferente de zero (o mesmo que 'grep' fará se não encontrar o texto que você está procurando no caso acima). Eu não sei se netsh vai fazer isso, mas você provavelmente pode testar, alimentando-o com alguns valores ilegais (como 1000000000000). Em caso afirmativo, você pode fazer algo um pouco mais simples:

netsh interface ipv4 set subinterface "Local Area Connection" mtu=386 store=persistent || exit 1

    
por 12.06.2012 / 05:36