Is there any way I can get it to record a failed ping without having to get rid of: " | FIND "TTL=""?
Não, pelo menos, não usar o comando stock find da Microsoft.
Veja algumas documentações para find , que no lado do cliente se aplicam ao Windows Vista e Windows 8 que afirma, em parte:
If you do not use /i, find searches for exactly what you specify for String.
Como você só pode especificar um String para procurar, não existe uma maneira direta de fazer o que você está tentando fazer.
Você pode, no entanto, fazê-lo de uma maneira um pouco indireta: redirecionar a saída de ping para um arquivo temporário e executar find duas vezes nesse arquivo:
ping -n %var1% 127.0.0.1 > Test.tmp
FIND "TTL=" Test.tmp > Test.txt
FIND "Request timed out." Test.tmp >> Test.txt
Ou você pode usar uma ferramenta que suporte a pesquisa de várias cadeias distintas, como o GNU grep (que está disponível para o Win32). Uma abordagem alternativa apontada em um comentário por and31415 é usar findstr , que está disponível no Windows 2000 e mais recente :
ping -n %var1% 127.0.0.1 | findstr /c:"TTL=" /c:"Request timed out."
Obviamente, como os dois operam observando a saída do idioma nativo de ping , eles terão problemas com locais diferentes do inglês.
Vale lembrar que find é originado no DOS 2.0 . Essa era a mesma versão do DOS que introduzia diretórios e suporte a disco rígido (o DOS 1.x só suportava o uso de diretórios). disquetes para armazenamento persistente, e faltava o conceito de diretórios). Como a compatibilidade com versões anteriores é algo que a Microsoft ainda leva muito a sério, eles não podem alterar facilmente como o find trata o parâmetro String e, nos dias do DOS 2.0, a memória e a velocidade de processamento eram enormes prêmios. Parece que o find no DOS 2.x nem sequer suportava pesquisa sem distinção entre maiúsculas e minúsculas (adicionado posteriormente com a opção /I ). É uma utilidade arcana, na verdade, sobrevivendo muito porque não pode ser substituída trivialmente por algo diferente.