[BATCH] Zwei Programme VERKNÜPFT (!) gleichzeitig starten

TarikVaine

Cadet 3rd Year
Registriert
Jan. 2014
Beiträge
57
Folgendes habe ich vor:
Ich habe einerseits ein altes Spiel aus den 90er Jahren und andererseits den Universal Joystick Remapper, der immer an sein muss, bevor das Spiel startet, damit das Spiel von meinem Gamepad Gebrauch machen kann.
Mein Ziel ist eine Batchdatei, die:
1. Universal Joystick Remapper startet
1.1 (da optional) ihn minimiert
2. das Spiel startet
3. den UJR automatisch schließt, wenn ich das Spiel (per ALT+F4) beende

Und genau drittens ist das Problem. Hat die Kommandozeile überhaupt noch Einfluss auf das Programm, nachdem es gestartet ist, bzw. kann "lauschen", ob und wie lange es läuft, sodass es im Falle seines Beendens einen weiteren Befehl (z.B. kill ujr.exe) ausführen kann?

1. und 2. sind natürlich hiermit kein Problem: "Start"-Befehl, aber 3. ist schwierig.
1.1 soll angeblich über den /min Parameter funktionieren, klappt aber auch nicht. :( Aber 1.1 ist auch nicht so wichtig.
 
Eine Möglichkeit wäre, das Spiel mit start /wait zu starten und anschließend, wenn der Batch nach Beenden des Spiels weiter geht, UJR mit taskkill zu beenden. Eine Alternative zum Batch wäre http://www.autoitscript.com/site/autoit/. Das kann auch minimieren und hat selbst kein Fenster.
 
Autoit klingt vielversprechend, sieht aber auf den ersten Blick zu komplex aus, als dass ich da nun viel Zeit hinein investieren möchte.
/wait klingt da schon besser, aber ich dachte, das sei nur, um ein Delay zu erzeugen, sprich, ich müsste vorher quasi wissen, wie viele Sekunden ich das Spiel zu spielen gedenke, um dann den taskkill ujr.exe Befehl hinterher zu schicken. Oder wie wäre der aufgebaut?
Googeln führt nur zu diesem Delay-Kram. :(
Am besten wäre etwas wie

If game.exe is not running
oder
if there is no game.exe process running
then taskkill ujr.exe

auch wenn sowas bei Batchdateien natürlich anders aussehen müsste. Aber ich glaube ihr wisst nun eher, was ich meine.
 
Geht eigentlich ganz einfach:
Code:
start /min "Fenstertitel" "C:\Pfad\zu\Joystick\Remapper.exe"
"C:\Pfad\zum\Spiel.exe"
taskkill /f /im Remapper.exe
1. Per start wird der Joystick Remapper minimiert (/min) gestartet. Ein Fenstertitel muss angegeben werden, weil start den Befehl ohne Titel nicht akzeptiert. Der Aufruf von start blockiert nicht, d.h. das Skript läuft einfach weiter.

2. In der Zweiten Zeile steht einfach nur der Pfad zum Spiel. Der Batch Interpreter versucht die angegebene Datei zu öffnen und blockiert so lange, bis die Datei wieder geschlossen wurde.

3. Nachdem die Datei (in deinem Fall das Spiel) geschlossen wurde läuft das Skript weiter und killt alle(!) Remapper Prozesse.
 
Stimmt, so einfach ist das, start /wait ist überflüssig. Ich habe aus irgendeinem Grund angenommen, dass das Ausführen von GUI-Anwendungen den Batch nicht blockiert. Tut es aber. Also "start" beim Spiel einfach weglassen. Wenn der Batch trotzdem zu früh fortgesetzt wird, kann das daran liegen, dass das Spiel eine weitere .exe startet und die erste beendet. Solche Launcher gibt es bei Spielen öfters. In dem Fall im Task Manager gucken, welche .exe da läuft und versuchen, diese direkt zu starten.

/wait ist übrigens in der von Dir verlinkten Dokumentation beschrieben: "Startet die Anwendung und wartet auf das Ende." ;) Macht aber nur in einer interaktiven Kommandozeile Sinn. In Batches ist das wie gesagt default.
 
Grantig schrieb:
Geht eigentlich ganz einfach:
Code:
start /min "Fenstertitel" "C:\Pfad\zu\Joystick\Remapper.exe"
"C:\Pfad\zum\Spiel.exe"
taskkill /f /im Remapper.exe
1. Per start wird der Joystick Remapper minimiert (/min) gestartet. Ein Fenstertitel muss angegeben werden, weil start den Befehl ohne Titel nicht akzeptiert. Der Aufruf von start blockiert nicht, d.h. das Skript läuft einfach weiter.

2. In der Zweiten Zeile steht einfach nur der Pfad zum Spiel. Der Batch Interpreter versucht die angegebene Datei zu öffnen und blockiert so lange, bis die Datei wieder geschlossen wurde.

3. Nachdem die Datei (in deinem Fall das Spiel) geschlossen wurde läuft das Skript weiter und killt alle(!) Remapper Prozesse.

Vielen Dank (auch für die ausführlichen Erläuterungen). Werde das abends probieren und dann Rückmeldung geben. :)
 
Zurück
Oben