TUT Aufbau einer Batch für den Windows Deamon

Aktuell führen wir noch einige Anpassungen durch, das Forum wurde jedoch bereits live geschaltet.
  • Da es immer wieder Beiträge gibt, wo User mit Windows haben, anbei mal die wichtigsten Sachen.



    Wie setze ich in einer Batch Parameter


    somit kann ich den Gameserver mit z.b.



    start.bat gsip gsport gsplayer , %var1% ist dann die IP, %var2% der Port, %var3% die Playerzahl usw.




    Wie lese ich die Pid eines Gameserverprozesses aus:



    Beispiel für Ark:

    Code
    SET line=%var%
      SETLOCAL ENABLEDELAYEDEXPANSION
      ECHO !line:\=\\
      ENDLOCAL
      set vara=!line:\=\\!
    for /f "usebackq tokens=2 delims==" %%a in (`wmic process where ^(ExecutablePath^="%vara%ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe"^) get processid /value`) do (
    set PID=%%a   
    )


    Wie stoppe ich den Gameserver anhand der oben gewonnenen PID:



    Es gibt 3 Möglichkeiten:




    Code
    TASKKILL /PID %PID%


    oder

    Code
    TASKKILL /PID %PID% /F


    oder

    Code
    SET line=%var%
      SETLOCAL ENABLEDELAYEDEXPANSION
      ECHO !line:\=\\
      ENDLOCAL
      set vara=!line:\=\\!
    WMIC PROCESS WHERE ExecutablePath="%vara%ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe" delete


    Da Spiele wie Ark oder Rust beim beenden noch Daten in die Map schreiben müssen sollte erst die Methode 1 gewählt werden. Danach macht man mit

    Code
    ping -n 5 127.0.0.1 > NUL


    5 Sekunden Pause und schiebt um sicher zu gehen noch eine der letzten beiden Möglichkeiten hinterher.




    Start eines Gameservers:

    Code
    set /A var9=%var2% + 1    // Queryport berechnen
    set /A var10=%var2% + 5  //Rconport berechnen
    cd %var%
    start /REALTIME ShooterGameServer.exe "%var%ShooterGame\ShooterGame.uproject" "TheCenter?MULTIHOME=%var1%?Port=%var2%?QueryPort=%var9%?RCONPort=%var10%?MaxPlayers=%var3%?bRawSockets?listen?" -nosteamclient -servergamelog  -game -server -log
  • Ich hab es mal angepinnt, das dieses TUT nicht durch andere Posts auf anderen Seiten verschwindet...



    Kann man die Variablen nur direkt aneinander packen?


    Oder kann man auch wie bei Linux Bash sagen:


    start.bat maxplayers XX port YY


    oder geht jetzt lediglich


    start.bat XX YY

  • Geht mit Sicherheit, ich habe mich aber nie damit beschäftig, da die Methode völlig ausreichend ist. Wer mit Batches arbeitet sollte sich auch mit call, goto und ähnlichen beschäftigen, damit kann man äußerst sinnvolle funktionen bauen. Wie Steamupdater, Auto-Modupdater etc.