Programm über Batch ausführen und schließen

MZ259

Komplett-PC-Aufrüster(in)
Programm über Batch ausführen und schließen

Hallo zusammen,

ich habe ein kleines Problem beim Schreiben einer Batch-Datei. Und zwar habe ich bei Skyrim eine ENB über den ENB Injector laufen und möchte mir das Starten etwas angenehmer gestalten. Zuerst muss ich eine ENB Injector.exe starten und anschließend Skyrim über den SKSE-Loader (skse_loader.exe) starten. Wenn ich Skyrim beende schließe ich auch den ENB Injector wieder.

Um das zu vereinfachen möchte ich mir eine kleine Batch schreiben, die das für mich erledigt. Mein bisheriger Code lautet so:

start D:\Spiele\Valve\Steam\steamapps\common\Skyrim\ENBInjector.exe
sleep 100
start D:\Spiele\Valve\Steam\steamapps\common\Skyrim\skse_loader.exe

Das Einzige, was noch fehlt ist ein Befehl, der abwartet, bis Skyrim wieder geschlossen wird und anschließend den ENB Injector schließt. Kann mir da jemand weiter helfen? Google konnte mir leider nicht helfen, da "start /wait D:\Spiele\Valve\Steam\steamapps\common\Skyrim\skse_loader.exe" nicht funktioniert hat oder mein Beenden-Befehl ("exit D:\Spiele\Valve\Steam\steamapps\common\Skyrim\ENBInjector.exe") falsch war.
Den sleep-Befehl habe ich aus Puffer eingebaut, damit mein Rechner Zeit hat den Injector zu starten.

Schonmal vielen Dnak für die Hilfe :)
 
AW: Programm über Batch ausführen und schließen

@MZ259 Am Besten legst du eine Schleife an, die solange läuft, wie der Prozess skse_loader.exe noch auffindbar ist. Wenn dieser nicht mehr vorhanden ist, kannst du die ENB Injector Anwendung beenden lassen.

Edit: Habe dir mal was versucht zu tippen. Das sollte eigentlich klappen. Hoffe das entspricht deinen Vorstellungen.

:loop
timeout /t 2 /nobreak
tasklist | find "skse_loader.exe" > nul
if errorlevel 1 taskkill /f /im "ENB Injector.exe"
tasklist | find "ENB Injector.exe" > nul
if errorlevel 1 goto end
goto loop

:end
exit

Falls du den Quelltext nicht verstehst, frag ruhig. :)

Gruß Muletto
 
Zuletzt bearbeitet:
AW: Programm über Batch ausführen und schließen

Das Script wird die CPU wohl fast schon mehr beanspruchen als Skyrim.
 
AW: Programm über Batch ausführen und schließen

Stimmt Jungs, das habe ich komplett vergessen. Ich füge das mal oben ein.
 
AW: Programm über Batch ausführen und schließen

Sry hatte ein paar Tage Internetausfall
Ich werd's gleich mal einbauen und testen. Die CPU sollte dabei eher weniger Probelme machen, da sie meistens weniger gefordert wird, als die Garfikkarte, aber auch das werde ich testen.
Danke für die Hilfe.

Edit 1: Interessant... Der ENB Injector geht kurz auf, wieder zu, SKSE geht an und alles funktioniert, obwohl der ENB Injector nicht da ist :ugly:
Ob der ENB Injector nun an ist oder nicht, macht mir nichts aus, solange es (Ingame) so funktioniert, wie es soll. Durch ausprobieren habe ich herrausgefunden, dass der "skse_loader.exe" nur zum Starten dient und sofort wieder ausgeht. Wenn ich den Code richtig interpretiere muss ich statt "tasklist find "skse_loader.exe" > nul" meinen Prozess von Skyrim eintragen, da der die ganze Zeit aktiv ist.

Hier mein gesamter Code:

start D:\Spiele\Valve\Steam\steamapps\common\Skyrim\ENBInjector.exe
sleep 100
start D:\Spiele\Valve\Steam\steamapps\common\Skyrim\skse_loader.exe
:loop
timeout /t 2 /nobreak
tasklist | find "TESV.exe" > nul
if errorlevel 1 taskkill /f /im "ENBInjector.exe"
tasklist | find "ENBInjector.exe" > nul
if errorlevel 1 goto end
goto loop

:end
exit

Edit 2: Hat funktioniert :) danke für die Hilfe :daumen:
 
Zuletzt bearbeitet:
AW: Programm über Batch ausführen und schließen

Die CPU sollte dabei eher weniger Probelme machen, da sie meistens weniger gefordert wird, als die Garfikkarte, aber auch das werde ich testen.

Du kannst ja mal den Timeout aus dem Script entfernen und beobachten, was dann passiert.
 
AW: Programm über Batch ausführen und schließen

Du könntest jetzt noch weiter gehen und Skyrim 2 feste Kerne zuweisen und dem CMD lediglich einen Kern.
Wenn das Script den Prozessor so belasten würde, ich hab es nicht getestet, würdest du es somit entlasten.
 
AW: Programm über Batch ausführen und schließen

So lange bei jedem Schleifendurchlauf eine kurze Pause eingelegt wird, ist das alles überhaupt kein Problem. Um nichts anderes ging es mir. Irgendwelche Kerne zuzuweisen ist völlig unnötig.
 
AW: Programm über Batch ausführen und schließen

Ich habe lediglich darauf hingewiesen. Das man aber gleich beleidigt sein muss? :wall: :ugly:
 
Zuletzt bearbeitet:
AW: Programm über Batch ausführen und schließen

Ich weiß nicht, wie du darauf kommst, ich sei beleidigt. Ich wüsste auch beim besten Willen nicht, weshalb.

Dein Vorschlag war sinnbefreit. Darauf habe ich hingewiesen. Nicht mehr und nicht weniger. Ich bin schon gespannt, was du diesmal in meinen Beitrag hineininterpretierst. Und nein, ich bin noch immer nicht beleidigt. :daumen:
 
AW: Programm über Batch ausführen und schließen

Ohne Timeout rafft es ziemlich an der CPU... geradezu erstaunlich. Zwei Kerne für Skyrim zuzuweisen wäre ein enormer Leistungsverlust, da ich auf allen vier Kernen eine AUslastugn von 70-90% bekomme (jeh nachdem, wo ich gerade bin) :ugly:
SMT bzw. CMT hat mein Prozessor (etwas älteres Baujahr) leider nicht, weshalb ich nur vier Threads (von vier physikalisch vorhandenen Kernen) zur Verfügung habe, im nächsten Jahr gibt's aber einen neuen :)
 
AW: Programm über Batch ausführen und schließen

Jup, je nach CPU ist die Auslastung natürlich unterschiedlich. Solange das Skript ja funktioniert ist ja alles i.O.
Den Parameter für das Intervall kann der Threadersteller sich wahlweise anpassen. :)
 
Zurück