chill3r
Goto Top

Wie kann eine Batch einen Ordner oder exe suchen und wie kann man 2 Batch zu einer Batch zusammenfügen?

Hallo,
ich würde gerne etwas mit 2 Batch-dateien verwirklichen, die ich im Internet gefunden habe. Diese sind dafür gedacht, ein Spiel zu starten, dabei direkt auf den eingestellten Server zu connecten und dabei die gewünschten Startparameter auszuführen.
Ich habe 2 Gameserver und möchte es meinen Spielern etwas vereinfachen, auf unseren Servern zu spielen. Bei dem Spiel handelt es sich um Arma2, genauer gesagt um die Mod Epoch.
Was ich bisher erreicht habe:
Den Pfad für das/die Spiele manuell eintragen, doppelklick auf die Batch und man startet das Spiel mit den Startparametern für die entsprechende Mod.

Was ich erreichen möchte:
Die zwei unten aufgeführten Batch-Dateien zu einer zusammen führen, mit einem Auswahlmenu ob auf Server 1 oder Server 2 verbunden werden soll.
Den fest eingetragenen Pfad zur exe der Spiele (es muss Pfad zu Arma2 und Arma2 Operation Arrowhead aufgerufen werden) so umschreiben, das die Batch den PC selbstständig nach den exe bzw den Ordnern durchsucht. Es hat nun mal nicht jeder den selben Pfad auf seinem PC face-wink

Nun ist eben die Grundlegende Frage für mich, ob das überhaupt machbar ist. wenn ich Google bemühe, komme ich da nicht sehr weit, ich denke mal ich weiss gar nicht genau, nach was ich da googlen soll.

Ich habe auch schon mit Visual Basic herumexperimentiert, habe da aber das gleiche Problem, wie kann ich es erreichen, das die Ordner selbstständig gefunden werden...

Ich zeige hier mal die beiden Batch, die ich bisher zusammengeschustert habe:

@echo off
set arma2oapath=C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2 Operation Arrowhead
set arma2path=C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2
set IP= hier steht dann die Server-IP
set PORT=2302
set MODS=@DayZ_Epoch;
start ""  "%arma2oapath%\ArmA2OA_BE.exe" 0 0 -skipintro -mod=%MODS% -noSplash -noFilePatching -world=empty -connect=%IP% -port=%PORT% "-mod=%arma2path%;expansion;"  
@exit

@echo off
set arma2oapath=C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2 Operation Arrowhead
set arma2path=C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2
set IP= hier steht eine andere Server-IP wie im anderen Beispiel
set PORT=2302
set MODS=@DayZ_Epoch;@Modzusatz;@FunMod
start ""  "%arma2oapath%\ArmA2OA_BE.exe" 0 0 -skipintro -mod=%MODS% -noSplash -noFilePatching -world=empty -connect=%IP% -port=%PORT% "-mod=%arma2path%;expansion;"  
@exit

Die beiden Batch unterscheiden sich eigentlich nur in de rZeile "setIP=" und in der Zeile "set MODS="
Wie gesagt, Ziel ist es nun rauszufinden
Wie kann ich die beiden in einer Batch vereinen, mit Auswahlmöglichkeit Server A oder B starten
Wie muss ich das anstellen, das die Pfade nich manuell eingetragen werden müssen, sondern gesucht werden?

Wäre toll wenn mir dazu jemand bissl was erklären könnte oder mir jemand sagen könnte nach was ich suchen muss um weiter zu kommen.
Danke fürs lesen

mfG CH!LL3R

Content-Key: 248783

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

Printed on: April 18, 2024 at 21:04 o'clock

Member: killtec
killtec Sep 10, 2014 updated at 11:48:04 (UTC)
Goto Top
Hi,
du kannst eine Variable einlesen und die dann auswerten. Anhand der Auswertung (If- Abfrage) führst du dann den jeweiligen start befehl aus.

rem Variable einlesen:
set /p var=
rem
rem Variable auswerten
if %var%==1 goto server1
if %var%==2 goto server 2


#edit könnte so klappen.:
@echo off
set arma2oapath=C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2 Operation Arrowhead
set arma2path=C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2
set IP= hier steht eine andere Server-IP wie im anderen Beispiel
set PORT=2302
echo Bitte Server waehlen.
set /p var=
if %var%==1 set MODS=@DayZ_Epoch;@Modzusatz;@FunMod
if %var%==2 set MODS=@DayZ_Epoch; 
start ""  "%arma2oapath%\ArmA2OA_BE.exe" 0 0 -skipintro -mod=%MODS% -noSplash -noFilePatching -world=empty -connect=%IP% -port=%PORT% "-mod=%arma2path%;expansion;"  
@exit

Gruß
Member: CHiLL3R
CHiLL3R Sep 10, 2014 updated at 17:44:42 (UTC)
Goto Top
Das sieht logisch und verständlich aus, bis auf eine Sache... die 2 Server haben ja auch verschiedenen IP-Adressen.
Wie kann ich das nu noch in die Abfrage der Variable mit kombinieren?
Also mit
set /p var= 
if %var%==1 set MODS=@DayZ_Epoch;@Modzusatz;@FunMod 
if %var%==2 set MODS=@DayZ_Epoch;  
werden ja nur die verschiedenen Mods angewählt, aber nicht verschiedenen IPs...
Weil in Batch eins steht zb:
set IP=123.456.789
während in Batch 2 steht:
set IP=987.654.321
würde das denn so funktionieren?
@echo off 
set arma2oapath=C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2 Operation Arrowhead 
set arma2path=C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2
echo Bitte Server waehlen. 
set /p var= 
if %var%==1 set IP=123.456.789 set PORT=2302 set MODS=@DayZ_Epoch;@Modzusatz;@FunMod
if %var%==2 set IP=987.654.321 set PORT=2302 set MODS=@DayZ_Epoch;   
start ""  "%arma2oapath%\ArmA2OA_BE.exe" 0 0 -skipintro -mod=%MODS% -noSplash -noFilePatching -world=empty -connect=%IP% -port=%PORT% "-mod=%arma2path%;expansion;"   
@exit 

Und die Frage nach dem automatischen Suchen der passenden Pfaden komm ich nicht weiter...
Member: killtec
killtec Sep 11, 2014 at 06:04:57 (UTC)
Goto Top
mit den Variablen sollte so passen.
deine Pfade solltest du in " setzen, könnte sonst sein, dass deine Variable nach c:\Program aufhört...
du könntest evtl. mit den Systemvariablen arbeiten. Ich denke mal das Valve\steam... ist immer gleich oder?
http://de.wikipedia.org/wiki/Umgebungsvariable
Ob ein System 32 oder 64 Bit ist kannst du auch abfragen.

if %PROCESSOR_ARCHITECTURE% == AMD64 befehl...
if not %PROCESSOR_ARCHITECTURE% == AMD64 befehl...

Gruß
Member: CHiLL3R
CHiLL3R Sep 11, 2014 at 08:47:28 (UTC)
Goto Top
Okay.. da muss ich mich nu erstmal reinfuchsen...
Also die Struktur ist zumindest ab Steam\SteamApps\common immer gleich, bei mir ist da noch ein Valve mit drin weil uralter Account, bei den neueren gibt es diesen "Zwischenordner" nicht mehr...
Bis jetzt bin ich zumindest mit deinem Gedankenanstoß mal soweit gekommen....
@echo off
echo Buchstabe eingeben und mit Enter bestaetigen
echo.
echo Epoch (S)auerland spielen
echo.
echo Epoch (F)unServer spielen
echo.
echo Unsere (H)omepage besuchen
echo.
echo Unser (T)eamspeak besuchen
:Auswahl
set /P wahl=Bitte waehlen: 
if /i "%wahl%"=="S" goto:Sauerland  
if /i "%wahl%"=="F" goto:FunServer  
if /i "%wahl%"=="H" goto:Homepage  
if /i "%wahl%"=="T" goto:Teamspeak  
echo Ungueltige Auswahl !
goto:auswahl

:Sauerland
set arma2oapath="C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2 Operation Arrowhead"  
set arma2path="C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2"  
set IP=xx.xxx.xxx.50
set PORT=2302
set MODS=@DayZ_Epoch;
start ""  "%arma2oapath%\ArmA2OA_BE.exe" 0 0 -skipintro -mod=%MODS% -noSplash -noFilePatching -world=empty -connect=%IP% -port=%PORT% "-mod=%arma2path%;expansion;"  
goto:eof

:FunServer
set arma2oapath="C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2 Operation Arrowhead"  
set arma2path="C:\Program Files (x86)\Valve\Steam\SteamApps\common\Arma 2"  
set IP=xx.xxx.xxx.116
set PORT=2302
set MODS=@DayZ_Epoch;@Air;@CBA_CO;@F14;@mods;
start ""  "%arma2oapath%\ArmA2OA_BE.exe" 0 0 -skipintro -mod=%MODS% -noSplash -noFilePatching -world=empty -connect=%IP% -port=%PORT% "-mod=%arma2path%;expansion;"  
goto:eof

:Homepage
start https://administrator.de
goto:eof

:Teamspeak
start ts3server://x.xxx.xxx.xx?port=9060
goto:eof
So wäre denn nun meine Hausaufgaben Variablen einzupflegen und (hätt ich gar nicht mehr dran gedacht) abzufragen ob 32er oder 64er System...
Mal sehen, was ich heute packe^^
Member: derCreeper
derCreeper Jun 04, 2017 at 12:14:36 (UTC)
Goto Top
man kann an einem Punkt festlegen, je nachdem wo die batch dateien gespeichert sind das die eine die andere ausführt.
(start c:\<speicherort der batch datei>) und dann wird sie an dem punkt gestartet wo die andere das eben genannte skript hat.