【问题标题】:Batch just crashes after too many ping attemptsping 尝试次数过多后,批处理会崩溃
【发布时间】:2020-06-29 08:54:14
【问题描述】:

如果我可以 ping 其中一些,我会尝试从类似地址列表中找出。 但是在大约 304 次 ping 尝试/失败后,脚本就崩溃了。

@echo off

echo Start
set /A PORT=0
call:start
echo Finished
pause

:start
set /A PORT=%PORT%+1
set ADRESS=http://Adress.servehttp.com:%PORT%
ping /n 1 %ADRESS%
if %ERRORLEVEL% EQU 0 (echo %ADRESS% >> results.log)
if %PORT% LEQ 65535 (call:start) ELSE pause

【问题讨论】:

  • 你不能ping一个网址或一个特定的端口,只能ping一个服务器:ping Adress.servehttp.com
  • 您应该使用Set "PORT=0" 而不是set /A PORT=0,以及Set /A PORT +=1Set /A PORT=PORT+1 而不是set /A PORT=%PORT%+1
  • @Stephan 你能告诉我如何 ping 那些。我的意思是,如果 ping 不起作用,我还能做些什么来做到这一点?

标签: batch-file ping


【解决方案1】:

您的start 函数是递归的,您已达到批处理脚本允许的堆栈限制,该限制通常非常低。

你可以通过使用循环来解决这个问题。

【讨论】:

  • if %PORT% LEQ 65535 (call:start) ELSE pause 更改为 if %PORT% LEQ 65535 (goto :start) ELSE pause 就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
相关资源
最近更新 更多