Estou tentando persistentemente fazer um ping em um destino, digamos, google.co.uk, para determinar a confiabilidade da Internet em um dos meus locais. Estou realizando este teste de ping por cerca de um mês para saber se a internet entre 6h e 10h e 16h e 19h vai se adequar à transferência de áudio ao vivo nos horários mais movimentados para o tráfego da Internet no dia .
Estou recebendo um arquivo de log irritante ...:
Com meu código no arquivo bat:
FOR /f "tokens=1-8 delims=:./ " %%G IN ("%date%_%time%") DO (SET datetime=%%G%%H%%I_%%J_%%K)
ping google.co.uk -t |find /v ""|cmd /q /v:on /c "for /l %%a in (0) do (set "data="&set /p "data="&if defined data echo(!time! !data!)" >> D:\filename_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~3,2%%date:~-4,4%.txt'
Está produzindo:
18:23:07.24 Reply from 216.58.198.227: bytes=32 time 18:23:07.24 =12ms TTL=54 18:23:08.24 Reply from 216.58.198.227: bytes=32 time 18:23:08.24 =12ms TTL=54 18:23:09.24 Reply from 216.58.198.227: bytes=32 time 18:23:09.24 =12ms TTL=54
Onde o resultado é dividido em duas linhas ... O que estou fazendo errado? E existe uma solução?
Desde já, obrigado.
fonte
Ler Aqui . Esse comportamento é causado por um problema de sincronização. o
set /p
no lado direito do tubo que lê dados doping
saída inicia uma operação de leitura enquanto oping
está escrevendo, mas ainda não enviou um retorno de carro.Mas o código na resposta indicada (manter um ping contínuo para uma única máquina nomeada) só faz sentido se você quiser manter o ping rodando em uma única máquina precisa evitando qualquer resolução de nome adicional, round dns robin, ... apenas para pingar o tempo todo contra uma única máquina.
Mas se, como dito, você quiser testar a conexão com a Internet, não a máquina alvo, um simples arquivo de lote (ex. responda ) é uma opção melhor.
fonte