只是寻找对这种蚕食重启代码的修正/补充(最初是一个Minecraft服务器,虽然这不是它现在使用的)。
@echo off
title Server Restarter
color 0A
cls
@%SystemRoot%\system32\ping.exe -n 1 xxx.xxx.x.xx
pause
:start
Call Server.bat
cls
pause
目前这项工作非常简单:调用server.bat
并启动服务器。它没有我喜欢的铃声和口哨声。
ping的输出目前不起作用。
目标:
Ping以查看是否可以访问特定的IP(可能还有端口)。
如果不可以访问,请关闭 Server.exe的所有当前实例
继续ping 直到特定IP 可以访问。
一旦IP 可达,请致电server.bat
需要以~30秒的间隔ping。
为什么需要它的一些背景:
游戏服务器当前没有关闭其进程,无论它是否在线,它继续在进程窗口中运行。这就是为什么我需要它关闭任何当前实例,否则我们最终会运行相同服务器的倍数。
服务器使用直接IP连接从本地计算机运行,因此如果本地计算机未连接到Internet,则服务器将无法访问任何人(显然)。 .bat
的目的是持续运行,即使用户不在计算机上,它也会确保服务器全天候在线。
这将是一个文件,我想让其他服务器主机可以使用它来保持自己的全天候在线。
端口检查将确保主服务器端口可以访问且故障不在他们一边,这不是必需的,所以如果它太麻烦,不要担心。
Inside" Server.bat":
@echo off
echo Server process starting
echo Ctrl+Alt+Del to Kill
Server.exe -batchmode -nographics
非常欢迎您的所有帮助和评论。我试图尽可能地概括它以保持简单,因此可以为任何可能在任何应用程序中使用它的人改变它。
答案 0 :(得分:1)
听起来像是在使用Windows机器或在Windows机器上工作。 Power Shell可能是编写脚本的选项。我在调查Test-Connection和Test-NetConnection之后遇到了这个问题,它们有点像ping,后者让你测试端口是否打开。不确定是否存在类似批处理文件的命令,但Power Shell允许您使用大多数批处理命令。这两个命令都有大量在线示例,并且在您的用例中非常容易使用。
您可能希望运行while (true)
循环,并定期执行ping /端口检查。这将满足您的持续检查要求。 Start-Sleep是一个cmdlet,可让您暂停脚本,您希望在永久循环中执行此操作。
您可以call batch files from Power Shell(another link from another good resource),这样,如果您不想在Power Shell中重写它们,您就可以重复使用现有脚本。