thecranky
Goto Top

Batch-Datei für wiederholtes starten und beenden von 2 dateien..

Mein TrackmaniaServer soll 24/7 laufen -> mit windows starten und bei neuer internetverbindung beenden und neustarten...

Hallo...

ih möchte gerne eine Batch-Datei mit der ich folgendes bewerksteligen kann...:

Ich habe zwei dateien:

1. TrackmaniaServer.exe (wie der name schon sagt der server für Trackmania)
2. Live.bat (Ein Addon)

INFO: die Live.bat darf erst ca 30-60 sekunden starten nachdem trackmaniaserver.exe angefangen hat zu starten.
GRUND: Nach Start von TrackmaniaServer.exe verbindet sich der server zum masterserver von Trackmania, dies dauert ein paar sekunden. Erst wenn derServer fertig geladen hat, darf die Live.bat ausgeführt werden.

BETRIEBSSYSTEM:
Win XP Pro - Sp3

Mein Vorhaben:

1. Beide Dateien sollen mit hochfahren des Rechners gestartet werden (nach Benutzer-Anmeldung). Live.bat in diesem fall aber erst ca 1-2 Minuten später, weil Trackmania auch erst später connecten kann, da nicht sofort das netzwerk verfügbar ist.

2. Meine Fritzbox ist so eingestellt das diese das internet zwichen 4 und 5 uhr erneuert (neue IP). Da aber die TrackmaniaServer.exe das nicht mitbekommt und auch keine Info an den Masterserver weitergibt. soll diese Datei und die Live.bat nach dem erneuern der IP neustarten. In diesem fall sollte die Live.bat wie oben genannt 30 sek später starten

Ich dachte es mir so:

1. Windows Anmeldung erfolgt (FALLS DER RECHNER MAL AUSGESCHALTET WURDE ODER STROMAUSFALL)
2. Starten der hier angefragten Batch-datei über Autostart (ICH NENNE SIE JETZT MAN AUTO.BAT)
3. auto.bat startet trackmaniaserver.exe
4. wartet 2 minuten
5. startet Live.bat
6. beendet Trackmaniaserver.exe und Live.bat um 05:30Uhr (JEDEN TAG!)
7. startet TrackmaniaServer um 05:31 (JEDEN TAG!)
8. startet Live.bat um zB. 05:32 (JEDEN TAG!)

Oder gibts vllt ein befehl der erkennt wenns internet neu aufgebaut wurde, wenn zB die internethardware oder der provider kurz streikt
wäre mir sogar am liebsten, kann ja sein das das inet mal mittags mal streikt.

Hoffe ihr könnt mir helfen.

MfG Thecranky

PS: Nein ich will mir keinen Server mieten!

Content-Key: 151584

Url: https://administrator.de/contentid/151584

Printed on: April 25, 2024 at 11:04 o'clock

Member: Friemler
Friemler Sep 22, 2010 at 22:04:49 (UTC)
Goto Top
Hallo TheCranky,

ich würde mir zwei Batchdateien erstellen. Eine, die über den Autostart beim Hochfahren des Rechners ausgeführt wird. Hier wird die trackmaniaserver.exe gestartet. Um die zwei Minuten bis zum Start der Live.bat zu warten, kannst Du mal Google nach wait.exe befragen oder Du nimmst den PING-Befehl in der Form
ping -n 120 127.0.0.1 >NUL
Das schickt 120 Pings auf Localhost, was ca. 120 Sekunden dauert. Durch >NUL werden die ganzen Ausgaben von PING nicht angezeigt.

Die zweite Batchdatei, in der der Trackmaniaserver gestoppt und wieder gestartet wird, würde ich über den Taskplaner täglich um 5:30 Uhr ausführen lassen. Der PING-Befehl würde dann
ping -n 30 127.0.0.1 >NUL
lauten, um 30 Sekunden bis zum Start der Live.bat zu warten.

Um auf eine Internettrennung zu beliebigen Zeiten zu reagieren, müsstest Du EIN Skript schreiben, das über den Autostart gestartet wird und die ganze Zeit läuft (Endlosskript). Das setzt z.B. alle 30 Sekunden einen Ping auf eine Internetseite Deiner Wahl ab. Bei Misserfolg wartet es so lange, bis sich die Seite wieder anpingen lässt und stoppt dann den Trackmaniaserver, startet ihn neu, wartet 30 Sekunden, startet dann die Live.bat und fängt danach wieder an, den Prüfping auf die Internetseite Deiner Wahl abzusetzen (GOTO-Schleife). Ungefähr so (unter Verwendung von WAIT.EXE von hier, die Du z.B. in den System32-Ordner kopieren musst):
trackmaniaserver.exe
wait 120000
call Live.bat

:MonitorLoop
ping -n 1 deine.pruefseite.de >NUL && (wait 30000 & goto :MonitorLoop)

:WaitForReconnect
ping -n 1 deine.pruefseite.de >NUL || (wait 10000 & goto :WaitForReconnect)

trackmaniaserver.exe stop  ::Oder wie auch immer der Befehl dazu lautet
trackmaniaserver.exe
wait 30000
call Live.bat

goto :MonitorLoop

Gruß
Friemler
Member: TheCranky
TheCranky Sep 22, 2010 at 23:14:28 (UTC)
Goto Top
hey danke für deine antwort...

ja ich habe meine bat so in der art gebaut, habe auch so was änliches egen im inet gefunden...

jedoch habe ich jetzt ein zusätzliches problem... die TrackmaniaServer.exe die ich starten will ist eine verknüpfung, da ich startparameter verwenden muss:

"C:\Dokumente und Einstellungen\CrankyServer\Desktop\Trackmania\TrackmaniaServer.exe" /dedicated_cfg=dedicated_cfg.txt /game_settings=MatchSettings/tracklist.txt /noautoquit /nodaemon  

so sieht zZ meine bat aus:
alle dateien befinden sich auf dem desktop:

trackmaniaserver.exe
wait 10000
call Live.bat

:MonitorLoop
ping -n 1 crankysserver.dyndns-at-home.com >NUL && (wait 3000 & goto :MonitorLoop)

:WaitForReconnect
ping -n 1 crankysserver.dyndns-at-home.com >NUL || (wait 3000 & goto :WaitForReconnect)

tskill trackmaniaserver
tskill Live
trackmaniaserver.exe
wait 10000
call Live.bat

goto :MonitorLoop
die zahlen sind so klein zum testen, dann dauerts nicht so lange...

C:\Dokumente und Einstellungen\CrankyServer\Desktop>TrackmaniaServer.exe
Der Befehl "TrackmaniaServer.exe" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.

C:\Dokumente und Einstellungen\CrankyServer\Desktop>wait 10000

C:\Dokumente und Einstellungen\CrankyServer\Desktop>call Live.bat
Der Befehl "Live.bat" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.

C:\Dokumente und Einstellungen\CrankyServer\Desktop>ping -n 1 crankysserve.dynd
ns-at-home.com   1>NUL  && (wait 3000   & goto :MonitorLoop )

irgendwas stimmt hier net face-sad
Member: TheCranky
TheCranky Sep 22, 2010 at 23:51:50 (UTC)
Goto Top
habs jetzt teilweise gelöst:

in der batch datei vorgendes geändert:
trackmaniaserver.exe 
in
TrackmaniaServer.exe.lnk
da es eine verknüpfung ist ^^ (Ink)


die Live.bat bekomme ich auch gestartet aber im gleichen cmd fenster wo die auto.bat läuft face-sad

das soll sie aber nicht... darf nicht
Member: jalba93
jalba93 Sep 23, 2010 at 05:36:11 (UTC)
Goto Top
Hallo,

anstatt
call x.bat
einfach
start x.bat
nehmen
Member: TheCranky
TheCranky Sep 23, 2010 at 20:40:04 (UTC)
Goto Top
ne geht net...

hab stattdessen

start cmd /k call live.bat

genohmen. hier wird cmd erneut ausgefürt un /k bewirkt das da dann der danachstehende befehl ausgeführt wird.
Member: TheCranky
TheCranky Sep 23, 2010 at 22:12:01 (UTC)
Goto Top
Sooooooo...

ich habe nun meine Auto.bat fast fertig... jedoch habe ich noch ein problem.

hier der inhalt:
@echo off

echo #####################################################
echo ###                  Trackmania                   ###
echo ###                    Server                     ###
echo ###                                               ###
echo ###                Autolader 1.0                  ###
echo ###                                               ###
echo ###               mit 'Live' Addon                ### 
echo ###                                               ###
echo ###                 by TheCranky                  ###
echo ###                                               ###
echo #####################################################
echo #####################################################
echo ###                                               ###
echo ### ACHTUNG:  Bitte dieses Programm nur beenden,  ###
echo ###               wenn der TM-Server beendet      ###
echo ###                     werden soll!!!            ###
echo ###                                               ###
echo #####################################################

// STARTET DEN SERVER: - OK

start /min TrackmaniaServer.exe.lnk

echo ###
echo ### %date% %time:~0,8%: Trackmania Server wurde gestartet
echo ###
echo ### %date% %time:~0,8%: Warte 60 Sekunden mit dem Starten des Addons 'Live'  

wait 10000

// STARTET DIE LIVE.EXE (WARUM EXE? SIEHE UNTEN!) - OK

start /min live.exe.lnk

echo ###
echo ### %date% %time:~0,8%: Addon 'Live' wurde gestartet  
echo ###
echo #####################################################
echo ###                                               ###
echo ### ACHTUNG:  Bitte dieses Programm nur beenden,  ###
echo ###               wenn der TM-Server beendet      ###
echo ###                     werden soll!!!            ###
echo ###                                               ###
echo #####################################################

// ÜBERPRÜFT INTERNET - OK

:MonitorLoop

ping -n 1 crankysserver.dyndns-at-home.com >NUL && (wait 3000 & goto :MonitorLoop)

// BEENDET DEN PROZESS LIVE.EXE , WIRD ABER NOCH IMMER IN EINEM CMD FENSTER ANGEZEIGT (2. CMD IM TASKMANAGER)

echo ###
echo ### %date% %time:~0,8%: Internetverbindung wurde getrennt

Tskill live

// BEENDET TM SERVER - OK

echo ###
echo ### %date% %time:~0,8%: Addon 'Live' beendet  

tskill trackmaniaserver

echo ###
echo ### %date% %time:~0,8%: Trackmania Server beendet
echo ###
echo ### %date% %time:~0,8%: ... Warte auf neue Verbindung ...

// ÜBERPRÜFT OB INET WIEDER DA - OK

:WaitForReconnect

ping -n 1 crankysserver.dyndns-at-home.com >NUL || (wait 3000 & goto :WaitForReconnect)

echo ###
echo ### %date% %time:~0,8%: Internetverbindung wurde neu aufgebaut

// START ERNEUT TM SERVER - OK

TrackmaniaServer.exe.lnk

echo ###
echo ### %date% %time:~0,8%: Trackmania Server erneut gestartet

wait 20000

// STARTET LIVE ERNEUT (NUN HAB ICH ABER LEIDER ZWEI FENSTER AUF)

start live.exe.lnk

echo ###
echo ### %date% %time:~0,8%: Addon 'Live' erneut gestartet  

goto :MonitorLoop

ich hatte das problem, das ich mit dem skript die live.bat nicht beenden konnte da der prozess nicht live.bat sonden cmd hies. sprich ich hatte 2x cmd im taskmanager und weis aber nicht wie ich die richtige und über haupt wie ich die beende.

daher hatte ich auf der live.bat eine live.exe erstellt

er startet auch wunderbar die live.exe (aber komischerweise richtig nur wenn ich das mit der verknüpfung mache, mit der original gehts iwie nicht)
... aber gleichzeitig auch wieder cmd

wenn ich jetzt tskill live.exe ausführe, wird dieser prozess auch beendet, aber das 2. cmd läuft weiterhin
kommt mir so vor als würde live.exe cmd ausführen und sich danach selbst in diesem fenster !?!?!?!?

also wie bekomme ich das zweite cmd-fenster geschlossen?
Member: bastla
bastla Sep 23, 2010 at 23:08:11 (UTC)
Goto Top
Hallo TheCranky und willkommen im Forum!
also wie bekomme ich das zweite cmd-fenster geschlossen?
Indem Du mit
set "Live=D:\Live.bat"  
start "LIVE" "%Live%"  
startest (oder in der "Live.bat" eine Zeile der Art
title LIVE
verwendest) und mit
taskkill /F /FI "WINDOWTITLE eq LIVE - %Live%"
das Schließen auf Basis des Fenstertitels durchführst (ungetestet) ...

Grüße
bastla
Member: TheCranky
TheCranky Sep 24, 2010 at 22:53:10 (UTC)
Goto Top
Also das mit dem starten mit dem Titel LIVE geht aber ich bekome sie jedoch nnicht geschlossen
Member: bastla
bastla Sep 25, 2010 at 08:01:38 (UTC)
Goto Top
Hallo TheCranky!

Wenn der nach "eq" angegebene Fenstertitel stimmt, sollte das Fenster auch geschlossen werden ...

Grße
bastla
Member: TheCranky
TheCranky Sep 25, 2010 at 13:35:59 (UTC)
Goto Top
also das fendster hat auch den titel Live aber läst sich nicht beenden.

meldung:

C:\Dokumente und Einstellungen\CrankyServer>taskkill /F /FI "WINDOWTITLE eq Live"  
ERFOLGREICH: Der Prozess mit PID 3744 wurde beendet.

aber das fenster ist noch auf...


mache ich das mit andern cmd fenstern wo der pfad als titel angegeben ist, dann werden diese auch beendet.

nur mit Live nicht...
Member: TheCranky
TheCranky Sep 25, 2010 at 23:08:13 (UTC)
Goto Top
hat sich erledigt...

die live.bat öffnet die php.exe mit live.php im cmd fenster

sprich ich kann mit tskill php das addon live beenden und das fenster schlist sich auch

danke nochmal an alle diegeholfen haben...