Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
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*
Set /a rgc+=2
#753
Spielkinder halt...
GELÖST

Einfachen Gamelauncher erstellen via Batch (soll unter anderem Ordner umbenennen)

Frage Entwicklung Batch & Shell

Mitglied: DerAntiheld

DerAntiheld (Level 1) - Jetzt verbinden

10.05.2011, aktualisiert 16:15 Uhr, 3969 Aufrufe, 12 Kommentare

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
Mitglied: DerAntiheld
10.05.2011 um 15:16 Uhr
So hab schonmal das "Grundinterface"
funktioniert alles bis Schritt 3
Dort weiß ich nicht weiter:
set Name=Spiel_Mod
for /Spiel %%i in ("C:\Users\MeinName\SpielLauncher") do rename !Name!
goto start
Ich möchte mit diesen Befehlen den Schritt 3a durchführen, jedoch geschieht nichts
könnt ihr mir da weiterhelfen?
EDIT: Ich sehe grade meine Abfrage ist auch völliger Schwachsinn, aber ich habs zumindest versucht ._.
Bitte warten ..
Mitglied: Skyemugen
10.05.2011 um 15:21 Uhr
Aloha,

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
Bitte warten ..
Mitglied: Friemler
10.05.2011 um 15:23 Uhr
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.

01.
@echo off 
02.
 
03.
setlocal enabledelayedexpansion 
04.
 
05.
 
06.
::Hier das Verzeichnis einstellen, in dem das Spiel seine Config speichert 
07.
set "GameConfigDir=E:\GameConfig" 
08.
 
09.
::Hier den Namen der Versionsdatei(en) einstellen 
10.
set "GameVersionFile=ActualVersion.txt" 
11.
 
12.
::Hier eine Liste von Versionsnamen festlegen. Falls die Namen Leerzeichen enthalten 
13.
::dann in Anführungszeichen einschließen 
14.
::Diese Versionsnamen müssen auch in die jeweiligen Versionsdateien eingetragen werden, 
15.
::aber ohne Anführungszeichen 
16.
set GameVersions="Version 1" "Version 2" "Version 3" 
17.
 
18.
 
19.
::Dynamisches Menü erzeugen 
20.
:Menu 
21.
cls 
22.
set /a Version=0 
23.
set /a nVersions=0 
24.
 
25.
echo Verwendbare Versionen: 
26.
echo. 
27.
for %%v in (%GameVersions%) do set /a "nVersions+=1" & echo   !nVersions!. %%~v 
28.
echo. 
29.
 
30.
<NUL set /p "=Welche Version möchtest du starten? A=Abbruch (" 
31.
for /l %%i in (1,1,%nVersions%) do <NUL set /p "=%%i/" 
32.
<NUL set /p "=A) " 
33.
 
34.
::Eingabe einlesen 
35.
set /p "Version=" 
36.
 
37.
::Eingabe auswerten 
38.
if /i "%Version%" equ "A" exit /b 
39.
 
40.
set /a Version=%Version% 
41.
if %Version% lss 1 goto :Menu 
42.
if %Version% gtr %nVersions% goto :Menu 
43.
 
44.
 
45.
::Anhand des Index den Namen der ausgewählten Version ermitteln 
46.
set "SelectedVersion=" 
47.
set /a cntr=0 
48.
for %%v in (%GameVersions%) do set /a "cntr+=1" & if !cntr! equ %Version% set "SelectedVersion=%%~v" 
49.
 
50.
 
51.
::Prüfen, ob das Konfigurationsverzeichnis des Spiels 
52.
::und in diesem die Versionsdatei vorhanden ist 
53.
if not exist "%GameConfigDir%" goto :ErrConfigDir 
54.
if not exist "%GameConfigDir%\%GameVersionFile%" goto :ErrNoVersionFile 
55.
 
56.
::Aktuelle Version aus der Versionsdatei auslesen 
57.
set /p "ActualVersion=" < "%GameConfigDir%\%GameVersionFile%" 
58.
 
59.
::Prüfen, ob die Datei einen Inhalt hat 
60.
if "%ActualVersion%" equ "" goto :ErrEmptyVersionFile 
61.
 
62.
::Prüfen, ob die Versionsbezeichnung aus der Versionsdatei 
63.
::in der internen Liste der Versionsnamen enthalten ist 
64.
echo %GameVersions%|find /i "%ActualVersion%" > NUL || goto :ErrNonExistentVersion 
65.
 
66.
 
67.
::Wenn aktueller und ausgewählter Versionsnamen identisch sind, Spiel starten 
68.
::Sonst Verzeichnisse umbenennen 
69.
if "%ActualVersion%" equ "%SelectedVersion%" ( 
70.
  goto :StartGame 
71.
) else ( 
72.
  move "%GameConfigDir%" "%GameConfigDir% %ActualVersion%" > NUL 
73.
  move "%GameConfigDir% %SelectedVersion%" "%GameConfigDir%" > NUL 
74.
75.
 
76.
 
77.
:StartGame 
78.
gameloader.exe 
79.
 
80.
exit /b 
81.
 
82.
 
83.
 
84.
::Fehlermeldungen ausgegben 
85.
 
86.
:ErrConfigDir 
87.
echo. 
88.
echo Standardordner "%GameConfigDir%" nicht gefunden. 
89.
exit /b 
90.
 
91.
 
92.
:ErrNoVersionFile 
93.
echo. 
94.
echo Versionsdatei "%GameConfigDir%\%GameVersionFile%" nicht gefunden. 
95.
exit /b 
96.
 
97.
 
98.
:ErrEmptyVersionFile 
99.
echo. 
100.
echo Versionsdatei "%GameConfigDir%\%GameVersionFile%" ist leer. 
101.
exit /b 
102.
 
103.
 
104.
:ErrNonExistentVersion 
105.
echo. 
106.
echo Die in der Versionsdatei "%GameConfigDir%\%GameVersionFile%" 
107.
echo angeggebene Version "%ActualVersion%" existiert nicht in der 
108.
echo internen Liste der Versionen: %GameVersions% 
109.
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
Alle diese Verzeichnisse müssten Dateien mit dem Namen 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]
Bitte warten ..
Mitglied: DerAntiheld
10.05.2011 um 15:39 Uhr
Ups Doppelpost =(
Bitte warten ..
Mitglied: DerAntiheld
10.05.2011 um 16:14 Uhr
Danke vielmals, ich mache mich gleich daran daraus den Launcher zu erstellen =DD
Ich kann auf jeden Fall ordentlich was draus lernen über Batch
Dankee =)


Edit:
hmm ich habe alles eingetragen bis auf den Startbefehl des Spiels
Wenn ich jedoch die .bat via Doppelklick starte und z.B. 1 eingebe oder egal welche zahl beendet sie sich.
Wenn ich die .bat via cmd öffne und wieder eine Zahl eingebe kommt folgende fehlermeldung:
Syntaxfehler.
Syntaxfehler.
Der Befehl "gameloader.exe" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
letztere ist mir klar aber wo liegen die Syntaxfehler?
Bitte warten ..
Mitglied: Friemler
10.05.2011 um 16:37 Uhr
Hallo AntiHeld,

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
Bitte warten ..
Mitglied: DerAntiheld
10.05.2011 um 16:49 Uhr
Das mit dem Quelltext hab ich schon verstanden =p
aber danke
Das ist was ich dann bekomme wenn ich es über den cmd starte (habe hier 1 eingegeben)

C:\Users\"Mein Name"\FLLauncher>set /a Version=0

C:\Users\"Mein Name"\FLLauncher>set /a nVersions=0

C:\Users\"Mein Name"\FLLauncher>echo Verwendbare Versionen:
Verwendbare Versionen:

C:\Users\"Mein Name"\FLLauncher>echo.


C:\Users\"Mein Name"\FLLauncher>for %v in ("Version 1" "Version 2" "Version 3") do se
t /a "nVersions+=1" & echo !nVersions!. %~v

C:\Users\"Mein Name"\FLLauncher>set /a "nVersions+=1" & echo !nVersions!. Version
1
1. Version 1

C:\Users\"Mein Name"\FLLauncher>set /a "nVersions+=1" & echo !nVersions!. Version
2
2. Version 2

C:\Users\"Mein Name"\FLLauncher>set /a "nVersions+=1" & echo !nVersions!. Version
3
3. Version 3

C:\Users\"Mein Name"\FLLauncher>echo.


C:\Users\"Mein Name"\FLLauncher>set /p "=Welche Version moechtest du starten? A=Abbru
ch (" 0<NUL
Welche Version moechtest du starten? A=Abbruch (
C:\Users\"Mein Name"\FLLauncher>for /L %i in (1 1 3) do set /p "=%i/" 0<NUL

C:\Users\"Mein Name"\FLLauncher>set /p "=1/" 0<NUL
1/
C:\Users\"Mein Name"\FLLauncher>set /p "=2/" 0<NUL
2/
C:\Users\"Mein Name"\FLLauncher>set /p "=3/" 0<NUL
3/
C:\Users\"Mein Name"\FLLauncher>set /p "=A) " 0<NUL
A)
C:\Users\"Mein Name"\FLLauncher>set /p "Version="
1

C:\Users\"Mein Name"\FLLauncher>if /I "1" EQU "A" exit /b

C:\Users\"Mein Name"\FLLauncher>set /a Version=1

C:\Users\"Mein Name"\FLLauncher>if 1 LSS 1 goto :Menu

C:\Users\"Mein Name"\FLLauncher>if 1 GTR 3 goto :Menu

C:\Users\"Mein Name"\FLLauncher>set "SelectedVersion="

C:\Users\"Mein Name"\FLLauncher>set /a cntr=0

C:\Users\"Mein Name"\FLLauncher>for %v in ("Version 1" "Version 2" "Version 3") do se
t /a "cntr+=1" & if !cntr! EQU 1 set "SelectedVersion=%~v"

C:\Users\"Mein Name"\FLLauncher>set /a "cntr+=1" & if !cntr! EQU 1 set "SelectedVer
sion=Version 1"

C:\Users\"Mein Name"\FLLauncher>set /a "cntr+=1" & if !cntr! EQU 1 set "SelectedVer
sion=Version 2"

C:\Users\"Mein Name"\FLLauncher>set /a "cntr+=1" & if !cntr! EQU 1 set "SelectedVer
sion=Version 3"

C:\Users\"Mein Name"\FLLauncher>if not exist ""C:\Users\"Mein Name"\Documents\My Games\Fre
elancer"" goto :ErrConfigDir
Das System kann den angegebenen Pfad nicht finden.

C:\Users\"Mein Name"\FLLauncher>if not exist ""C:\Users\"Mein Name"\Documents\My Games\Fre
elancer"\"ActualVersion.txt"" goto :ErrNoVersionFile
Das System kann den angegebenen Pfad nicht finden.

C:\Users\"Mein Name"\FLLauncher>set "ActualVersion="

C:\Users\"Mein Name"\FLLauncher>for /F "usebackq delims=" %l in (""C:\Users\"Mein Name"\Do
cuments\My Games\Freelancer"\"ActualVersion.txt"") do set "ActualVersion=%l"
Die Datei ""C:\Users\"Mein Name"\Documents\My" kann nicht gefunden werden.

C:\Users\"Mein Name"\FLLauncher>if "" EQU "" goto :ErrEmptyVersionFile

C:\Users\"Mein Name"\FLLauncher>echo.


C:\Users\"Mein Name"\FLLauncher>echo Versionsdatei ""C:\Users\"Mein Name"\Documents\My Gam
es\Freelancer"\"ActualVersion.txt"" ist leer.
Versionsdatei ""C:\Users\"Mein Name"\Documents\My Games\Freelancer"\"ActualVersion.tx
t"" ist leer.

C:\Users\"Mein Name"\FLLauncher>exit /b
Bitte warten ..
Mitglied: Friemler
10.05.2011 um 16:50 Uhr
Hallo Antiheld,

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]
  1. In Deinem letzten Posting kommen andere Fehlermeldungen.
  2. Du hast Anführungszeichen in den Pfaden zu den Versionsdateien
  3. Code-Formatierung macht alles leserlicher.
[/EDIT]
Bitte warten ..
Mitglied: DerAntiheld
10.05.2011 um 16:58 Uhr
Danke sehr =)
Es gibt noch ein Problem das ich jetzt festgestellt habe
Man muss bei schritt 4 noch zwischen den einzelnen Spieleordnern Unterscheiden da jede Mod bzw jede Version einen eigenen besitzt =S
Aber ich mach das jetzt folgendermaßen:
1. Ich starte deinen Launcher
2. Ich starte die jeweilige Game Version

Nur fals du wirklich noch bock hast würde ich dich fragen ob du die unterscheidung noch einbauen könntest, ansonsten geht es auch so =)
Bitte warten ..
Mitglied: Friemler
10.05.2011 um 17:07 Uhr
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
Bitte warten ..
Mitglied: DerAntiheld
10.05.2011 um 17:51 Uhr
Ich habe folgendes gemacht:
Ich habe eine (Variable? String?) namens "GameDir" (ähnlich deinem GameConfigDir) hinzugefügt in der ich den Standartpfad des Spiels definiert habe.
Ich habe unter :StartGame folgendes eingetragen:
start "" "%GameDir% %SelectedVersion%\EXE\Freelancer.exe"
Es funktioniert \o/
Bitte warten ..
Mitglied: Friemler
10.05.2011 um 18:11 Uhr
Zitat von DerAntiheld:
Es funktioniert \o/

Meinen Glückwunsch! Zwar anders, als ich dachte aber einfacher und somit besser.

Gruß
Friemler
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Datei per Batch in Ordner mit sich ständig änderndem Namen kopieren (3)

Frage von Drxrey zum Thema Windows Server ...

Batch & Shell
Batch: .rar-Pakete automatisch Ordner erstellen und verschieben (2)

Frage von BowserMD zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Ordner erstellen und verschieben (6)

Frage von Fromeonly zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...