我在 Windows 7 中创建了一个 .BAT 文件,其中包含以下行:
PING XXX.XXX.XXX.XXX -t
(XXX 替换实际 IP 号)。但是,当我双击这个批处理文件时,我可以看到 ping 命令在循环中重复执行。我甚至尝试将 重命名为,ping.BAT
但ping.CMD
结果是一样的。
我想避免通过命令提示符编写 ping 命令,这就是我创建批处理文件的原因。我不知道为什么在批处理文件中输入相同的语句时会不断调用 ping 命令。
答案1
由于您没有提供任何您不喜欢的输出或屏幕截图,因此您面临的问题到底是什么有点不清楚,但我会解释我看到的两个最可能的问题:
假设您的脚本被调用ping.bat
并且看起来像这样:
ping example.com
然后解释器 ( cmd.exe
) 在环境变量的路径中搜索/探测%PATH%
类似于ping
... 的内容,它通过附加每个后缀来实现这一点,其中%PATHEXT%
包含类似于 的内容.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
。因此,仅从 调用会ping
导致ping.bat
搜索等等。解释器将在当前工作目录 (您的 ) 中ping.com
ping.exe
ping.bat
找到并调用它。ping.bat
ping.bat
所以你会有一个愉快的递归这里:ping.cmd 执行第一行,搜索“ping”,找到“ping.cmd”,执行第一行,搜索“ping”,找到“ping.cmd”,执行第一行,搜索“ping”,找到“ping.cmd”...
您可能遇到的第二个问题是:
批处理文件的解释器通常会重复您写入 .bat/.cmd 文件的命令。因此,类似这样的内容ping www.superuser.com
将如下所示:
C:\Users\XYZ\Desktop>ping www.superuser.com
Ping wird ausgeführt für superuser.com [64.34.119.12] mit 32 Bytes Daten:
Antwort von 64.34.119.12: Bytes=32 Zeit=110ms TTL=46
Antwort von 64.34.119.12: Bytes=32 Zeit=107ms TTL=46
如果您想要摆脱C:\Users\XYZ\Desktop>ping www.superuser.com
脚本输出中的某些内容,那么您必须@
在脚本的每一行前面加上一个(例如,'@ping www.superuser.com')或者@echo off
在您想要“安静地”执行的一堆命令行之前放置一个。
TL;DR; 不要将您的 bat 文件命名为与现有程序相同的名称。
答案2
我有同样的问题,
ping.bat 包含几行 ping 命令
ping host1
ping host2
ping host3
...
cmd shell 中的输出如下所示,并继续循环,直到使用ctrl+中断C
c:\ping host1
c:\ping host1
c:\ping host1
c:\ping host1
c:\ping host1
...
c:\ping host1
^CTerminate batch job (Y/N)?
要解决这个问题,只需重命名ping.bat
,这样它就不会在批处理文件中调用自身,或者使用 ping.exe 作为批处理文件中的命令
ping.exe host1
ping.exe host2
ping.exe host3
...
答案3
-t 参数使 ping 持续进行。
也许删除 -t 参数,然后告诉你的批处理脚本等待你按下回车键然后再关闭 cmd 屏幕。
有一段时间没用过窗户了,但这应该可行:
ping xxx.xxx.xxx.xxx
pause
exit
答案4
本地脚本执行似乎阻止 ping.exe 在脚本中运行。尝试右键单击,然后选择“以管理员身份运行”。我正在查找如何更新执行策略。
正当我以为自己对 Windows 有所了解时,他们却改变了它。
更新:递归是答案......
您不能将其命名为 ping.bat 并调用 ping.exe
您也不能将其命名为route.bat并调用route.exe。
例如,当我运行 ping.bat 时,然后再次将其作为 pingx.bat 运行: