Arquivo em lote para gravar os resultados do ping em um arquivo de texto

2

Eu sei que isso é uma variação de uma pergunta já feita, mas depois de pesquisas e várias tentativas fracassadas, eu acho que preciso de ajuda.

Gostaria de fazer ping em dois sites repetidamente e registrar o tempo e os resultados em um arquivo de texto.

Eu encontrei essa pergunta Salvar saída de ping em um arquivo de texto para ser muito útil, mas as várias versões que tentei não funcionam.

Se eu executar o seguinte em uma janela de comando, ele cria o arquivo de texto no meu diretório de usuários, como seria de esperar, com os pings repetidos gravados corretamente.

ping xxx.xxx.xxx.xxx -t > filename.txt

Mas se eu criar o seguinte arquivo ping.dat e salvá-lo na minha área de trabalho. Quando eu o executo, ele abre uma janela cmd com o tempo certo e também cria o arquivo de texto desejado na minha área de trabalho. Infelizmente, o arquivo contém apenas o tempo e não os resultados do ping, e os resultados obviamente não estão separados em 3 segundos, como esperado.

@ECHO OFF
:LOOPSTART
time /T
ping xxx.xxx.xxx.xxx -n 4 >> filename.txt
ping yyy.yyy.yyy.yyy -n 4 >> filename.txt
sleep -m 3000
GOTO LOOPSTART

Presumi que meu problema estava relacionado a como eu estava tentando gravar os resultados, mas se eu modificar o arquivo em lote, excluindo o arquivo > > filename.txt 'reference tudo o que ele faz é abrir uma janela cmd que instantaneamente preenche os timestamps.

@ECHO OFF
:LOOPSTART
time /T
ping xxx.xxx.xxx.xxx -n 4
ping yyy.yyy.yyy.yyy -n 4
sleep -m 3000
GOTO LOOPSTART

Por isso, minhas perguntas são

A) Alguma ideia do que estou fazendo errado?

B) Como altero o registro de data e hora de modo que seja HH: MM: SS em vez de HH: MM

Toda ajuda é apreciada.

S.

@ LInker3000 Obrigado pela resposta. Eu deveria ter mencionado isso na minha pergunta original, mas eu já tentei isso. Quando adicionei '> > nomedoarquivo.txt 'para o registro de data e hora, agora obtenho uma janela de comando que se enche com "O processo não pode acessar o arquivo porque está sendo usado por outro processo". Após o término do processo, o arquivo txt criado tem apenas um registro de data e hora e o texto "Terminar Trabalho em Lote (Y / N)".

    
por SC. 11.07.2011 / 23:54

4 respostas

3

Se você quiser o registro de data e hora no arquivo também, precisará colocar:

time /T >> filename.txt

No primeiro exemplo que você citou:

@ECHO OFF
:LOOPSTART
time /T >> filename.txt
ping xxx.xxx.xxx.xxx -n 4 >> filename.txt
ping yyy.yyy.yyy.yyy -n 4 >> filename.txt
sleep -m 3000
GOTO LOOPSTART

Você pode brincar com o seguinte código para fornecer um timestamp mais configurável:

set time_hh=%time:~0,2%
if %time_hh% lss 10 (set time_hh=0%time:~1,1%)
set time_mn=%time:~3,2%
set time_ss=%time:~6,2%
set time_ms=%time:~9,2%

echo %time_hh%:%time_mn%:%time_ss%.%time_ms% >> filename.txt

Coloque tudo isso no lugar da linha time / t ...

    
por 12.07.2011 / 00:00
2

Para obter os segundos (e milissegundos), substitua time /T por echo %time% para que você tenha:

@ECHO OFF
:LOOPSTART
echo %time% >> filename.txt
ping xxx.xxx.xxx.xxx -n 4 >> filename.txt
ping yyy.yyy.yyy.yyy -n 4 >> filename.txt
sleep -m 3000
GOTO LOOPSTART
    
por 12.07.2011 / 00:31
0

Experimente o meu modelo. Ele pedirá o ip do host. Basta salvá-lo como .bat e executá-lo. Digite o IP do host quando solicitado.

@echo off

set/p host=host Address: 
set logfile=Log_%host%.log

echo Target Host = %host% >%logfile%
for /f "tokens=*" %%A in ('ping %host% -n 1 ') do (echo %%A>>%logfile% && GOTO Ping)
:Ping
for /f "tokens=* skip=2" %%A in ('ping %host% -n 1 ') do (
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A>>%logfile%
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A
    timeout 1 >NUL 
    GOTO Ping)
    
por 16.03.2016 / 15:02
0
@ECHO OFF

:SERVER1    

for /F "tokens=* skip=2" %%A in ('ping -n 1 0.0.0.1 ') do (
   echo %date% %time% %%A >>filename.txt
   goto SERVER2 
)

:SERVER2

for /F "tokens=* skip=2" %%A in ('ping -n 1 0.0.0.1 ') do (
   echo %date% %time% %%A >>filename.txt
   goto SERVER1
)

EXIT
    
por 29.11.2016 / 00:29