2017-07-21 83 views
2

只需要尋找一個更正/添加到這個Cannibalized重新啓動代碼(原來是一個Minecraft服務器,雖然這不是它現在使用的)。批處理服務器ping並重新啓動遊戲

@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的輸出功能不起作用。

目標:

  1. 平,看是否有特定的IP(可能端口)可達。

  2. 如果他們不可達,關閉的任何當前情況下SERVER.EXE

  3. 繼續執行ping 直到特定IP 可達。

  4. 一旦IP 到達,叫server.bat

它需要在約30秒的時間間隔來ping。

有些情況下爲什麼它的需要:

遊戲服務器目前不會不管它是在線與否的關閉其進程,它繼續在這個過程中窗口中運行。這就是爲什麼我需要關閉任何當前實例,否則我們最終會運行多個相同的服務器。

服務器使用直接IP連接從本地計算機運行,因此如果本地計算機未連接到Internet,服務器將無法與任何人(顯然)聯繫。 .bat的意圖是持續運行,即使用戶不在計算機上,它也會負責確保服務器24/7在線。

這將是一個文件,我想提供給其他服務器主機誰可能想要使用它來保持自己24/7在線。

端口檢查將確保主服務器端口可到達並且故障不在他們一邊,這不是必需的,所以如果它太麻煩了,不要擔心。

內部 「Server.bat」:

@echo off 
echo Server process starting 
echo Ctrl+Alt+Del to Kill 
Server.exe -batchmode -nographics 

您的幫助和意見的一切都非常歡迎。我試圖儘可能地概括這一點,以保持簡單,所以可以對任何可能適用於任何應用程序的人進行更改。

+0

首先:在'ping'命令中不需要'@'。其次,您可以使用'&'或'|'運算符來檢測ping是否成功。你也可以嘗試'%errorlevel%'變量。 – SteveFest

+0

@SteveFest對不起,我不太明白,我在哪裏/如何使用'%errorlevel%'或'&'''我的批次理解水平毫無疑問是有限的。 – Cinn

+0

去ss64.com/nt,你可以找到 – SteveFest

回答

1

聽起來像你正在使用Windows機器或使用Windows機器。 Power Shell可能是編寫腳本的選項。在調查了Test-ConnectionTest-NetConnection之後,我遇到了這個問題,它們都是ping類型,後者讓您測試一個端口是否打開。不知道是否有像這樣的批處理文件命令,但Power Shell允許您使用大多數批處理命令。這兩個命令都有大量的在線示例,並且在您的用例中非常易於使用。

您可能希望有一個while (true)循環運行,並定期進行ping /端口檢查。這將滿足您的持續檢查要求。 Start-Sleep是一個cmdlet,可讓您暫停腳本,您將在永久循環中執行該腳本。

您可以call batch files from Power Shellanother link from another good resource),這樣如果您不想在Power Shell中重寫它們,就可以重新使用現有的腳本。