将 ping 结果写入文本文件的批处理文件

将 ping 结果写入文本文件的批处理文件

我知道这是一个已经问过的问题的变体,但经过研究和几次失败的尝试,我想我需要一些帮助。

我想重复 ping 两个网站并将时间和结果记录在文本文件中。

我发现这个问题将 Ping 输出保存到文本文件中非常有用,但我尝试过的几个版本都没有用。

如果我在命令窗口中执行以下操作,它会在我的用户目录中创建文本文件,正如我预期的那样,并正确记录重复的 ping。

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

但是,如果我创建以下 ping.dat 文件并将其保存在我的桌面上。当我运行它时,它既会打开一个包含时间的 cmd 窗口,也会在我的桌面上创建所需的文本文件。不幸的是,该文件仅包含时间,而不包含 ping 结果,而且结果显然不像预期的那样相隔 3 秒。

@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

我认为我的问题与我尝试写入结果的方式有关,但是如果我修改批处理文件,删除'>> filename.txt'引用,它所做的就是打开一个 cmd 窗口,该窗口会立即填满时间戳。

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

因此我的问题是

A) 知道我做错了什么吗?

B)如何更改时间戳,使其为 HH:MM:SS 而不是 HH:MM

感谢所有帮助。

年代。

@LInker3000 感谢您的回复。我应该在最初的问题中提到这一点,但我已经尝试过了。当我将“>> filename.txt”添加到时间戳时,我现在会得到一个命令窗口,其中显示“该进程无法访问该文件,因为它正在被另一个进程使用。”。终止该进程后,创建的 txt 文件只有一个时间戳和“终止批处理作业(Y/N)”文本。

答案1

如果您也希望文件中包含时间戳,则需要输入:

time /T >> filename.txt

在第一个例子中你引用了:

@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

您可以尝试使用以下代码来获得更可配置的时间戳:

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

把所有这些放在時間/t...线

答案2

要获取秒数(和毫秒),请替换time /Techo %time%

@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

答案3

尝试一下我的模板。它会要求您输入主机 IP。只需将其另存为.bat并运行即可。出现提示时输入主机 IP。

@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)

答案4

@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

相关内容