Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 将ping结果保存到TXT文件_Windows_Batch File_Cmd - Fatal编程技术网

Windows 将ping结果保存到TXT文件

Windows 将ping结果保存到TXT文件,windows,batch-file,cmd,Windows,Batch File,Cmd,我试图建立一个脚本,将保存一些ping结果信息到一个文本文件。我真正需要的唯一信息是日期、时间、IP地址、丢失百分比和平均时间。 我已经能够完成这项工作的一部分 我可以获得保存到文本文件的时间和日期,但没有其他内容。 我遇到的另一个问题是,当我把它保存到一个文本文件时,它会将100个结果保存到该文件中。我只想保存最终结果。然后,当我重新运行该文件时,它会向文本文件添加一个新条目 以下是我一直在玩的一个示例: @echo on SET ip=10.22.222.54 @echo. %date% a

我试图建立一个脚本,将保存一些ping结果信息到一个文本文件。我真正需要的唯一信息是日期、时间、IP地址、丢失百分比和平均时间。 我已经能够完成这项工作的一部分

我可以获得保存到文本文件的时间和日期,但没有其他内容。 我遇到的另一个问题是,当我把它保存到一个文本文件时,它会将100个结果保存到该文件中。我只想保存最终结果。然后,当我重新运行该文件时,它会向文本文件添加一个新条目

以下是我一直在玩的一个示例:

@echo on
SET ip=10.22.222.54
@echo. %date% at %time% to %ip%>>PingLogs.txt
ping %ip% -n 1 >>Logs.txt
stop
这是我希望保存到文本文件时的外观:

2019年7月6日:21:54:10.22.222.54-0%-0毫秒,
2019年7月6日20:18:10.22.222.54-0%-0毫秒


使用
for/f
循环捕获命令的输出。当您的命令
ping
输出几行时,需要进行大量分析,以找出正确的标记和分隔符,从而获得所需的部分。然后根据您的需要重新组装它们,并在其周围放置一个循环:

@echo off
set "IP=www.google.de"
:loop
set "loss="
for /f "tokens=1,9 delims=( " %%a in ('ping -n 1 %IP% ^|findstr "%% ms,"') do (
    if not defined loss (set "loss=%%a") else (set "average=%%b")
)
echo %date% : %time% : %IP% - %loss% - %average%
goto :loop 
(注意:
findstr%%ms,
查找包含
%%
的行(必须使用另一个
%%
进行转义)和/或字符串
ms,
-正好是我们需要的两行)。您也可以使用`findstr“loss Average”,但该脚本只适用于英文Windows版本。我喜欢让我的脚本尽可能独立于语言

输出:

07.06.2019 : 19:40:39,37 : www.google.com - 0% - 13ms
07.06.2019 : 19:40:41,25 : www.google.com - 0% - 13ms
07.06.2019 : 19:40:43,24 : www.google.com - 0% - 15ms
07.06.2019 : 19:40:45,25 : www.google.com - 0% - 13ms
07.06.2019 : 19:40:47,24 : www.google.com - 0% - 13ms
注意:日期/时间格式取决于区域设置-您的可能看起来不同

注意:使用
ping-n1
时,不要期望损失不是
0%
100%


注意:使用
ping-n1
最小值
最大值
平均值
都是相同的(此脚本采用
平均值
,因此如果使用的不是
/n1
,输出仍然是您期望的)

如果需要确保日期和时间格式始终以相同的方式显示,可以使用此.bat文件脚本调用PowerShell脚本。将这两个脚本放在同一目录中

==pip.bat

powershell -NoLogo -NoProfile -File "%~dp0pip.ps1" >pip.txt
==pip.ps1

$Computers = @('localhost', 'asdfa')
foreach ($Computer in $Computers) {
    if ($tc = Test-Connection -ComputerName $Computer -Count 1 -ErrorAction SilentlyContinue) {
        ForEach-Object {
            "{0} : {1} : {2} - {3}% - {4}" -f @(
                (Get-Date -f "MM/dd/yyyy")
                , (Get-Date -f "HH:mm")
                , $tc.Address
                , "0"
                , $tc.ResponseTime
            )
        }
    } else {
        "{0} : {1} : {2} - {3}% - {4}" -f @(
            (Get-Date -f "MM/dd/yyyy")
            , (Get-Date -f "HH:mm")
            , $Computer
            , "100"
            , 0
        )
    }
}

当您没有尝试这样做时,您如何期望有一行与您提供的示例类似的代码。您告诉它要做的是将一行输出到一个名为
PingLogs.txt
的文件中,该行在21:54:39.20到10.22.222.54时显示为:
06/07/2019。然后您可能正在将
ping
命令中的
6
-
8
行输出到另一个名为
Logs.txt
的文件。我们不是来为您编写代码的,您必须付出一些努力,目前为止,您做的还不够,请再努力一点@谢谢你的411,但正如你所看到的,我已经开始尝试解决这个问题。回声.%日期%at%time%至%ip%>>PingLogs.txt将一些数据保存到txt文件中,无论其运行情况如何(添加了100条记录),即使在下一行中它被设置为1。现在回到我的问题,让它尽可能简单,让您知道我如何将%loss和ms保存到txt文件,并在其设置为1时只保存一条记录。如果您无法理解您正在输出到两个不同的文本文件,并且当您将
at
发送到第一个文本文件时,它无法神奇地将其更改为
,您应该停止编写脚本。此外,我已经阅读了您的问题,它没有问
如何将%loss和ms保存到txt文件中,并且在设置为1时仅让它保存一条记录。虽然“Stephan”可能已经足够好去阅读你的问题,但你需要考虑的是,非英语的读者也需要理解你的问题。目前它还不够好。我得到这个错误C:\Users\kelly\Desktop\bat file>set“IP=www.google.com”C:\Users\kelly\Desktop\bat file>set“loss=”C:\Users\kelly\Desktop\bat file>for/F“tokens=1,9 delims=(%a in('ping-n1 www.google.com | findstr“%ms”)do(如果没有定义损失(设置“loss=%a”)else(设置“average=%b)))这不是错误,这是命令重复。您显然忘记了
@echo关闭了它,但刚刚发现出于某种原因,我必须以管理员身份运行它才能正常工作。为了将它保存到文本文件中,我在echo%date%:%time%:%IP%-%loss%-%average%行中添加了>>Logs.txt,但这不起作用。我遗漏了什么吗?我明白了我在echo%date%:%time%:%IP%-%loss%-%average%>C:\Users\kelly\Desktop\log.txt
后的下一行添加了echo%date%:%time%:%IP%-%loss%-%average%