Einfachen Gamelauncher erstellen via Batch (soll unter anderem Ordner umbenennen)
Hallo, ich habe ein relativ spezifisches Problem und wollte Fragen wie bzw ob es überhaupt via Batch zu lösen ist.
Ich habe bei einem Spiel die Möglichkeit gleichzeitig verschiedene, teilweise gemoddete Versionen auf dem PC zu haben. Nun gibt es jedoch das Problem, dass jede der Versionen unveränderbar auf den selben Standartordner zugreift der bei der Orginalversion für manche Konfigurations- und Spielstanddateien verwendet wird. Nun wollte ich einen kleinen Launcher schreiben welcher erstmal abfragt welche Version des Spiels ich den starten möchte (nur bin ich leider zu schlecht in Batch dafür). Das soll dann ungefähr so aussehen:
Welche Version von "Spielename" möchtest du starten?
1. "Version1"
2. "Version2"
3. "Version3"
Wenn man dann z.B. "1" in die Konsole eingibt, wird folgendes gemacht:
1. Es wird geprüft zu welcher Version der Standartordner gehört (z.B. über eine Textdatei die in jedem Ordner liegt und mit dem Spiel nichts zu tun hat)
2. Wenn der Ordner zur Ausgewählten Version gehört:
Weiter mit Schritt 4
3. Wenn der Ordner zu einer anderen Version gehört:
a) Umbenennen des Ordners und zwar durch Anhängen der Versionsnummer bzw Versionsbezeichnung
b) Checken nach dem Ordner mit der benötigten Version
c) Umbenennen dieses Ordners zum Standartodner
4. Starten des Spiels
Ich weiß ist viel aber genau deswegen bin ich ja zu schlecht für (kenn mich mit Batch sehr wenig aus)
Danke schonmal,
Anti
Ich habe bei einem Spiel die Möglichkeit gleichzeitig verschiedene, teilweise gemoddete Versionen auf dem PC zu haben. Nun gibt es jedoch das Problem, dass jede der Versionen unveränderbar auf den selben Standartordner zugreift der bei der Orginalversion für manche Konfigurations- und Spielstanddateien verwendet wird. Nun wollte ich einen kleinen Launcher schreiben welcher erstmal abfragt welche Version des Spiels ich den starten möchte (nur bin ich leider zu schlecht in Batch dafür). Das soll dann ungefähr so aussehen:
Welche Version von "Spielename" möchtest du starten?
1. "Version1"
2. "Version2"
3. "Version3"
Wenn man dann z.B. "1" in die Konsole eingibt, wird folgendes gemacht:
1. Es wird geprüft zu welcher Version der Standartordner gehört (z.B. über eine Textdatei die in jedem Ordner liegt und mit dem Spiel nichts zu tun hat)
2. Wenn der Ordner zur Ausgewählten Version gehört:
Weiter mit Schritt 4
3. Wenn der Ordner zu einer anderen Version gehört:
a) Umbenennen des Ordners und zwar durch Anhängen der Versionsnummer bzw Versionsbezeichnung
b) Checken nach dem Ordner mit der benötigten Version
c) Umbenennen dieses Ordners zum Standartodner
4. Starten des Spiels
Ich weiß ist viel aber genau deswegen bin ich ja zu schlecht für (kenn mich mit Batch sehr wenig aus)
Danke schonmal,
Anti
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 10.05.2011 um 13:35:12 Uhr
a) Umbennenen des Ordners und zwar durch Anhängen der Versionsnummer bzw Versionsbezeichnung
b) Checken nach dem Ordner mit der benötigten Version
c) Umbennenen dieses Ordners zum Standartodner
ennennennenn... *mööp*...*mööp*b) Checken nach dem Ordner mit der benötigten Version
c) Umbennenen dieses Ordners zum Standartodner
Set /a rgc+=2
#753
Spielkinder halt...
Content-ID: 165978
Url: https://administrator.de/forum/einfachen-gamelauncher-erstellen-via-batch-soll-unter-anderem-ordner-umbenennen-165978.html
Ausgedruckt am: 21.04.2025 um 21:04 Uhr
12 Kommentare
Neuester Kommentar
Aloha,
autsch, au weia ... lies dir doch bitte einmal
greetz André
edit: Ist heute „Die-Gnade-Friemlers-day”? Mensch, der TE spielt mit gemoddeten Versionen, da muss doch etwas batchmodding auch selber gehen
autsch, au weia ... lies dir doch bitte einmal
for /?
sowie das Tutorial zur FOR-Schleife durch, das wird dir sicherlich erstmal vor Augen führen, was du versuchst anzurichten *gg*greetz André
edit: Ist heute „Die-Gnade-Friemlers-day”? Mensch, der TE spielt mit gemoddeten Versionen, da muss doch etwas batchmodding auch selber gehen
Hallo DerAntiheld,
willkommen im Forum. Da ich gerade Zeit und Lust hatte, habe ich mich mal Deiner erbarmt. Normalerweise bekommt man auf die Anfrage nach solchen etwas umfangreicheren Scripten, ohne eigene Bemühungen zu zeigen, seltenst eine Antwort.
Das Script ist dynamisch programmiert, also "wächst mit", wenn du in Zeile 16 weitere Versionsbezeichnungen einträgst.
Die Verzeichnisstruktur mit den verschiedenen Versionen müsste dann z.B. so aussehen (unter Verwendung der Beispielnamen aus dem Scriptcode):
Alle diese Verzeichnisse müssten Dateien mit dem Namen
Die Datei
Gruß
Friemler
[EDIT]
Bugfix in den Zeile 72 u. 73, s.u.
[/EDIT]
willkommen im Forum. Da ich gerade Zeit und Lust hatte, habe ich mich mal Deiner erbarmt. Normalerweise bekommt man auf die Anfrage nach solchen etwas umfangreicheren Scripten, ohne eigene Bemühungen zu zeigen, seltenst eine Antwort.
@echo off
setlocal enabledelayedexpansion
::Hier das Verzeichnis einstellen, in dem das Spiel seine Config speichert
set "GameConfigDir=E:\GameConfig"
::Hier den Namen der Versionsdatei(en) einstellen
set "GameVersionFile=ActualVersion.txt"
::Hier eine Liste von Versionsnamen festlegen. Falls die Namen Leerzeichen enthalten
::dann in Anführungszeichen einschließen
::Diese Versionsnamen müssen auch in die jeweiligen Versionsdateien eingetragen werden,
::aber ohne Anführungszeichen
set GameVersions="Version 1" "Version 2" "Version 3"
::Dynamisches Menü erzeugen
:Menu
cls
set /a Version=0
set /a nVersions=0
echo Verwendbare Versionen:
echo.
for %%v in (%GameVersions%) do set /a "nVersions+=1" & echo !nVersions!. %%~v
echo.
<NUL set /p "=Welche Version möchtest du starten? A=Abbruch ("
for /l %%i in (1,1,%nVersions%) do <NUL set /p "=%%i/"
<NUL set /p "=A) "
::Eingabe einlesen
set /p "Version="
::Eingabe auswerten
if /i "%Version%" equ "A" exit /b
set /a Version=%Version%
if %Version% lss 1 goto :Menu
if %Version% gtr %nVersions% goto :Menu
::Anhand des Index den Namen der ausgewählten Version ermitteln
set "SelectedVersion="
set /a cntr=0
for %%v in (%GameVersions%) do set /a "cntr+=1" & if !cntr! equ %Version% set "SelectedVersion=%%~v"
::Prüfen, ob das Konfigurationsverzeichnis des Spiels
::und in diesem die Versionsdatei vorhanden ist
if not exist "%GameConfigDir%" goto :ErrConfigDir
if not exist "%GameConfigDir%\%GameVersionFile%" goto :ErrNoVersionFile
::Aktuelle Version aus der Versionsdatei auslesen
set /p "ActualVersion=" < "%GameConfigDir%\%GameVersionFile%"
::Prüfen, ob die Datei einen Inhalt hat
if "%ActualVersion%" equ "" goto :ErrEmptyVersionFile
::Prüfen, ob die Versionsbezeichnung aus der Versionsdatei
::in der internen Liste der Versionsnamen enthalten ist
echo %GameVersions%|find /i "%ActualVersion%" > NUL || goto :ErrNonExistentVersion
::Wenn aktueller und ausgewählter Versionsnamen identisch sind, Spiel starten
::Sonst Verzeichnisse umbenennen
if "%ActualVersion%" equ "%SelectedVersion%" (
goto :StartGame
) else (
move "%GameConfigDir%" "%GameConfigDir% %ActualVersion%" > NUL
move "%GameConfigDir% %SelectedVersion%" "%GameConfigDir%" > NUL
)
:StartGame
gameloader.exe
exit /b
::Fehlermeldungen ausgegben
:ErrConfigDir
echo.
echo Standardordner "%GameConfigDir%" nicht gefunden.
exit /b
:ErrNoVersionFile
echo.
echo Versionsdatei "%GameConfigDir%\%GameVersionFile%" nicht gefunden.
exit /b
:ErrEmptyVersionFile
echo.
echo Versionsdatei "%GameConfigDir%\%GameVersionFile%" ist leer.
exit /b
:ErrNonExistentVersion
echo.
echo Die in der Versionsdatei "%GameConfigDir%\%GameVersionFile%"
echo angeggebene Version "%ActualVersion%" existiert nicht in der
echo internen Liste der Versionen: %GameVersions%
exit /b
Das Script ist dynamisch programmiert, also "wächst mit", wenn du in Zeile 16 weitere Versionsbezeichnungen einträgst.
Die Verzeichnisstruktur mit den verschiedenen Versionen müsste dann z.B. so aussehen (unter Verwendung der Beispielnamen aus dem Scriptcode):
E:\GameConfig
E:\GameConfig Version 2
E:\GameConfig Version 3
ActualVersion.txt
enthalten.Die Datei
E:\GameConfig\ActualVersion.txt
müsste die Zeile Version 1
enthalten, E:\GameConfig Version 2\ActualVersion.txt
die Zeile Version 2
usw.Gruß
Friemler
[EDIT]
Bugfix in den Zeile 72 u. 73, s.u.
[/EDIT]
Hallo AntiHeld,
kommentiere mal das
Um Fehler beim Abtippen/Copy&Paste-Fehler zu vermeiden, kannst Du auf das Wort
Gruß
Friemler
kommentiere mal das
@echo off
in der ersten Zeile aus und verfolge den Scriptlauf am Bildschirm (1. Regel beim Batch-Debugging). Dann kannst Du die Zeilen posten, die den/die Fehler verursachen.Um Fehler beim Abtippen/Copy&Paste-Fehler zu vermeiden, kannst Du auf das Wort
Quelltext
am oberen rechten Rand der Box mit dem Script klicken. Der Code erscheint dann in einem neuen Fenster ohne Zeilennummern. In dieses Fenster klicken, CTRL+A
(alles ist selektiert), dann CTRL+C
(Code ist in der Zwischenablage). Dann ins Fenster eines Texteditors klicken, der Text in der ASCII-Codierung speichern kann (Codepage 850 oder OEM850 bei z.B. Notepad++) und mit CTRL+V
einfügen.Gruß
Friemler
Hallo Antiheld,
die Fehler sind in Zeile 72 u. 73. Neue Zeilen 72 u.73:
Kommt davon, wenn man nicht richtig testet...
Gruß
Friemler
[EDIT]
die Fehler sind in Zeile 72 u. 73. Neue Zeilen 72 u.73:
move "%GameConfigDir%" "%GameConfigDir% %ActualVersion%" > NUL
move "%GameConfigDir% %SelectedVersion%" "%GameConfigDir%" > NUL
Kommt davon, wenn man nicht richtig testet...
Gruß
Friemler
[EDIT]
- In Deinem letzten Posting kommen andere Fehlermeldungen.
- Du hast Anführungszeichen in den Pfaden zu den Versionsdateien
- macht alles leserlicher.
Hallo Antiheld,
wäre es jetzt nicht an der Zeit zu versuchen, etwas dazuzulernen
?
Schau Dir mal die Zeilen 16 und 46-48 an.
Um das Script weiterhin leicht erweiterbar zu halten, könntest Du einen String wie in Zeile 16 definieren, der die Pfade zu den verschiedenen Programmversionen in Anführungszeichen eingeschlossen enthält.
Mit einer Schleife wie in Zeile 48 kannst Du dann den zur eingegebenen Version passenden Programmpfad ermitteln.
Versuchs mal, ist nicht so schwer. Nur ein bisschen Geduld und Hirnschmalz erforderlich
. Kannst ja mal Rückmeldung geben, ob es funktioniert hat.
Gruß
Friemler
wäre es jetzt nicht an der Zeit zu versuchen, etwas dazuzulernen
Schau Dir mal die Zeilen 16 und 46-48 an.
Um das Script weiterhin leicht erweiterbar zu halten, könntest Du einen String wie in Zeile 16 definieren, der die Pfade zu den verschiedenen Programmversionen in Anführungszeichen eingeschlossen enthält.
Mit einer Schleife wie in Zeile 48 kannst Du dann den zur eingegebenen Version passenden Programmpfad ermitteln.
Versuchs mal, ist nicht so schwer. Nur ein bisschen Geduld und Hirnschmalz erforderlich
Gruß
Friemler
Meinen Glückwunsch! Zwar anders, als ich dachte aber einfacher und somit besser.
Gruß
Friemler