Batch file 自动Ping测试错误

Batch file 自动Ping测试错误,batch-file,Batch File,我正在尝试使用一个.cmd文件创建一个自动ping测试,该文件从一个名为computers的文件中提取ip地址。看起来它在大部分情况下都有效,但在第一次测试后,所有的ping测试结果都为阴性或无效。 我不知道这是否是问题的根源,但请求后的errorlevel不可靠:在成功ping后,它并不总是设置为0。检查ping成功的最可靠方法是在ping命令的输出中搜索“TTL=”。成功ping的输出总是包含ping应答的TTL。在其他情况下,输出不会包含“TTL=”。 请检查此命令的错误级别: ping

我正在尝试使用一个.cmd文件创建一个自动ping测试,该文件从一个名为computers的文件中提取ip地址。看起来它在大部分情况下都有效,但在第一次测试后,所有的ping测试结果都为阴性或无效。


我不知道这是否是问题的根源,但请求后的errorlevel不可靠:在成功ping后,它并不总是设置为0。检查ping成功的最可靠方法是在
ping
命令的输出中搜索“TTL=”。成功ping的输出总是包含ping应答的TTL。在其他情况下,输出不会包含“TTL=”。
请检查此命令的错误级别:

ping -n 1 %1 | find "TTL="
允许在某些文本中搜索文字字符串。如果找到,它会将errorlevel设置为0,否则设置为1。您还可以使用而不是
查找


编辑:这仅在ping到的地址是IPv4的情况下发生。对于IPv6地址,errorlevel设置正确。对于IPv6,未打印TTL,因此必须使用errorlevel检查ping是否成功。[此处]您可以找到一种常规方法来检查ping是否成功(IPv4或IPv6)。谢谢你的评论和链接。如果要强制使用IPv4或IPv6,可以分别使用的
-4
-6
标志。

我不知道这是否是问题的根源,但请求后的错误级别不可靠:在成功ping后,它并不总是设置为0。检查ping成功的最可靠方法是在
ping
命令的输出中搜索“TTL=”。成功ping的输出总是包含ping应答的TTL。在其他情况下,输出不会包含“TTL=”。
请检查此命令的错误级别:

ping -n 1 %1 | find "TTL="
允许在某些文本中搜索文字字符串。如果找到,它会将errorlevel设置为0,否则设置为1。您还可以使用而不是
查找


编辑:这仅在ping到的地址是IPv4的情况下发生。对于IPv6地址,errorlevel设置正确。对于IPv6,未打印TTL,因此必须使用errorlevel检查ping是否成功。[此处]您可以找到一种常规方法来检查ping是否成功(IPv4或IPv6)。谢谢你的评论和链接。如果您想强制使用IPv4或IPv6,可以分别使用的
-4
-6
标志。

看看这个脚本:愚蠢的问题,但是。。。从输出中读取的是机器名,而不是ip地址。是否已检查名称解析是否有效?批量调试的第一步:从文件顶部删除
@echo off
,然后读取错误。这一行正在抑制调试信息,而您正在要求其他人猜测整个批处理文件中出现了什么问题。看起来这就是我如何设置computers.txt文件的:(看看这个脚本:愚蠢的问题,但是…从你的输出中你读取的是机器名而不是ip地址。你检查过名称解析是否正常吗?批量调试的第一步:从文件顶部删除
@echo off
,并读取错误。这一行正在抑制调试信息,你正在询问pe。)继续,以便从整个批处理文件中猜出哪里出了问题。看起来这就是我设置computers.txt文件的方式:(最好检查
TTL=
(有错误包括
TTL
字符串),并且只有在测试ipv4地址时才这样做。(更多)它仍然不起作用。我注意到,在第一次ping之后,它说的是活动的,它给出了带有字节时间的回复,等等,但在其余部分,它简单地说检查“任何IP”,你能在你的帖子中添加输出吗?抱歉,看起来这是我在computers.txt文件中的格式。最好检查
TTL=
(有错误,包括
TTL
字符串),并且只有在测试ipv4地址时才出现。(更多)它仍然不起作用。我注意到,在第一次ping之后,它说的是活动的,它给出了带有字节时间的回复,等等,但剩下的只是说检查“任何IP”你能在你的帖子中添加这个输出吗?抱歉,看起来这是我在computers.txt文件中的格式设置