online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon Schamhorst vom 20.11.2019, 13:35 Options

WoW per batchdatei automatisieren

Hallo, ich spiele seit einer ganzen weile WoW auf einem Privatserver, da mit 13€ für nen offiziellen Server zu teuer ist. da der jetz ziemlich häufig abkackt, wollte ich was machen, um immer den aktuellen server zu haben:
im verzeichnis gibt es eine datei, die sich realmlist.wtf nennt, iin dieser datei legt man die serveradresse fest.
kann man eine batchdatei schreiben, die einen abfragt, auf welchem server man spielen möchte(bis hierher kein problem), anschließend die realmlist.wtf entleert(kein plan wie) und die neue adresse reinschreibt(kein plan wie)..
also meine eigentliche frage:
wie kann man via batchdatei den inhalt einer datei löschen/ersetzen?
Gruß Fabian


Antwort schreiben

Antwort 1 von disco vom 20.11.2019, 14:46 Options

moin

inhalt einer datei ersetzen:
echo dein_text > datei.txt

text an datei anfügen

echo dein_text >> datei.txt

g,
disco

Antwort 2 von vcltester vom 20.11.2019, 14:49 Options

Hallo Fabian,


vielleicht möchtest Du mal den Inhalt der Datei "
realmlist.wtf 
" hier posten?
Wenn Du schon einen Teil der Batchdatei fertig hast, solltest Du die Mühe nicht scheuen, und den ebenfalls hier reinstellen...

Dann kann Dir vielleicht geholfen werden.

Einen schönen Nachmittag wünscht
vcltester

Antwort 3 von Schamhorst vom 20.11.2019, 16:26 Options

@echo off
set /p server=Auf welchem Server soll gespielt werden(1: beyond-wow, 2: gargamel-wow):

if %server%==1 (goto 1)
if %server%==2 (goto 2)
:1
echo set realmlist beyond.servegame.com>"K:\WoW\World of Warcraft\realmlist.wtf"
call "K:\WoW\World of Warcraft\WoW.exe"
:2
echo set realmlist realm.gargamel-wow.net>"K:\WoW\World of Warcraft\realmlist.wtf"
call "K:\WoW\World of Warcraft\WoW.exe"

so hab ich das jetz gemacht, jedoch pausiert er nach dem ersten call solange, bis ich wow beendet habe, dann wird zu punkt 2 übergegangen, wie kann ich der datei sagen, dass nach call wow.exe schluss ist, guibt es da einen befehl(stop) oder so
Gruß Fabian

Antwort 4 von Denkanstoßer vom 20.11.2019, 16:36 Options

Hi, versuchs mal so:

@echo off
set /p server=Auf welchem Server soll gespielt werden(1: beyond-wow, 2: gargamel-wow):
if %server%==1 (goto 1)
if %server%==2 (goto 2)
:1
echo set realmlist beyond.servegame.com>"K:\WoW\World of Warcraft\realmlist.wtf"
:2
echo set realmlist realm.gargamel-wow.net>"K:\WoW\World of Warcraft\realmlist.wtf"
:3
call "K:\WoW\World of Warcraft\WoW.exe"

mfg

Antwort 5 von Denkanstoßer vom 20.11.2019, 16:39 Options

Korrektur:

@echo off
set /p server=Auf welchem Server soll gespielt werden(1: beyond-wow, 2: gargamel-wow):
if %server%==1 (goto 1)
if %server%==2 (goto 2)
:1
echo set realmlist beyond.servegame.com>"K:\WoW\World of Warcraft\realmlist.wtf"
goto 3
:2
echo set realmlist realm.gargamel-wow.net>"K:\WoW\World of Warcraft\realmlist.wtf"
:3
call "K:\WoW\World of Warcraft\WoW.exe"

mfg

Antwort 6 von Schamhorst vom 20.11.2019, 17:26 Options

es funzt, danke!!!!
Gruß fabian

Antwort 7 von Schamhorst vom 20.11.2019, 17:39 Options

noch eine frage:
wie kann ich einen Zeilenumbruch setzen?
das es dann so aussieht
Auf welchem Server soll gespielt werden?
1-Beyond-wow
2-Gargamel
(hier soll dann der cursor sein)
Gruß fabian

Antwort 8 von batti-batch vom 20.11.2019, 19:31 Options

Hallo Fabian,


ich habe mir Deine Batch-Datei mal angeschaut und ein paar Änderungen vorgenommen.

(1) Dateiname und Pfad des Spiels und der *.wtf-Datei sowie die Einträge für die *.wtf-Datei sind nun im
SET-Block 
untergebracht, das erleichtert spätere Anpassungen.

(2) Die Beschriftung der Eingabeaufforderung ist nun mehrzeilig. Eingaben, die nicht den Vorgaben 1, 2 oder E entsprechen, werden abgewiesen und das Programm kehrt wieder zur Sprungmarke :start und damit zur Eingabe zurück. Die Eingabe von mehr als einem Steuer- oder Befehlszeichen (z.B. < oder > ) kann hier allerdings nicht abgefangen werden.

(3) das Batchprogramm wird nach Start des Spiels oder durch Drücken der Taste "E" beendet.

(4) Für die Sprungmarken und Variablen habe ich zur Erleichterung späterer Anpassungen sprechende Namen verwendet.

(5) das Programm ist hinsichtlich des Starts von World of Warcraft nicht gestestet.

Hier nun das vollständige Programm:

@ECHO off
SETLOCAL
 
REM
REM Testprogramm
REM Start des Spiels "World of Warcraft"
REM von zwei verschiedenen Servern
REM
REM http://www.supportnet.de/threads/1638134
REM 
REM batti-batch 20.11.2007
REM 
REM Batch lauffaehig ab Window 2000
REM


SET "wtf_datei=K:\WoW\World of Warcraft\realmlist.wtf"
SET "spiel=K:\WoW\World of Warcraft\WoW.exe"
SET "beyond_option=set realmlist beyond.servegame.com"
SET "gargamel_option=set realmlist realm.gargamel-wow.net"

:start
CLS

ECHO Auf welchem Server moechten Sie spielen?
ECHO.
ECHO 1 = beyond-wow 2 = gargamel-wow E = Ende
ECHO.
SET /p server=Bitte Ihre Eingabe: 

IF [^%server%] EQU [1] GOTO :beyond
IF [^%server%] EQU [2] GOTO :gargamel
IF [^%server%] EQU [E] GOTO :ende
GOTO :start

:beyond
ECHO %beyond_option%>%wtf_datei%
GOTO :spiel

:gargamel
ECHO %gargamel_option%>%wtf_datei%

:spiel
START /wait %spiel%&EXIT

:ende
EXIT



Viel Spaß beim Testen.

Herzliche Grüße
batti-batch

Antwort 9 von Schamhorst vom 20.11.2019, 20:33 Options

wow, danke
, ich habe da aber nochmal ne frage:
wofür steht EQU?
und wait %spiel$ bedeutet, dass solange nichts getan wird, bis die datei, welche durch %spiel% definiert wird getratet wird? anschließend exit. is klar.
Mein Ego erlaubt mir nicht, die abzuschreiben, ich hab mir das jetz mal angeschaut und versuch das allein^^
Gruß Fabian

Antwort 10 von batti-batch vom 20.11.2019, 20:50 Options

Hallo Fabian,


"
EQU
" ist ein Vergleichsoperator und bedeutet "equal", also "gleich" und ist in seiner Bedeutung identisch mit "==".
Der Befehl
START
mit der Option
/wait
startet eine Anwendung und wartet auf deren Ende. Der nachfolgende Befehl
EXIT
beendet sowohl die Batchdatei als auch die Instanz des Kommandozeileninterpreters.


Herzliche Grüße
batti-batch

Antwort 11 von Schamhorst vom 21.11.2019, 09:52 Options

kann man den wait befehl auch iwie für eine zeitverzögerung nutzen
(wait 10) oder so? hat jetz nich viel mit dem Programm zu tun, ist eher so im allgemeinen
Gruß Fabian

Antwort 12 von batti-batch vom 21.11.2019, 10:50 Options

Hallo Fabian,


bei Deiner Frage handelt es sich nicht um den
WAIT
-Befehl, sondern um die Option
/wait
des
START
-Befehls.
Leider ist es mit dieser Option nicht möglich, eine Zeitverzögrung einzubauen.

Es wird besser sein, zum Thema "Zeitverzögrung in einer Batch-Datei" ein extra Thema aufzumachen, da es ansonsten zu weit vom eigentlichen Problem wegführt.


Herzliche Grüße

batti-batch

Antwort 13 von Schamhorst vom 21.11.2019, 11:05 Options

nja gut.
aber noch was, was auch was der überschrift zu tun hat:
also:
ich möchte eine batchdatei erstellen, welche nach dem verzeichnis zur WoW.exe fragt. dieses verzweichnis soll anschließend unter %systemdrve% abgelegt werden. da das alles nicht so einfach scheint, habe ich vor mehrere Batchdateien zu machen, die durch einen converter alle zusammengepackt wwerden.
und zwar so:
batchdatei 1:
erstellt ein textdokument auf %systemdrive%
fragt nach dem WoW-verzeichnis(geht das auch graphisch?)
kopiert batchdatei 2 ins angegebene verzeichnis
erstellt eine start-batch-datei auf dem desktop
löscht sich anschließend selber(das wird schwer, oder?)
die start batch datei ließt nun den Pfad aus der Textdatei aus und startet die batchdatei2

nja, was ich eigentlich wiisen möchte:
wie kann ich den inhalt einer datei auslesen und der variable %pfad% zuordnen?
kann man zur angabe des pfades auch sowas wie "graphisch Browsen" verwenden?
Gruß Fabian

Antwort 14 von Schamhorst vom 21.11.2019, 11:15 Options

ich hab schon wieder ne andere idee:
1.wie erstelle ich eine datei?(mit batch)
2.wie kann ich den inhalt einer datei auslesen?
3.Wie kann ich einen Pfad graphisch auswählen?
Gruß Fabian

Antwort 15 von disco vom 21.11.2019, 11:20 Options

moin

mit batch kannst du keine datei grafisch auswählen.
ist es dem user nicht zuzumuten den pfad seine wow.exe selbst (ggf. in ein configfile) einzutragen?

g,
disco

Antwort 16 von Schamhorst vom 21.11.2019, 11:22 Options

jah, kann man schon machen, aber ich wollt es für die anderen so einfach wie möglich machen.
ok, bleiben noch 2 fragen:
1.Dateiinhalt auslesen und in variable machen
2. neue datei erstellen
Gruß fabian

Antwort 17 von batti-batch vom 21.11.2019, 11:38 Options

Hallo Fabian,


graphische Dinge lassen sich mit einer Batch nicht erledigen. Solche Sachen sind anderen Programmierumgebungen vorbehalten.

Das Auslesen einer (einzeiligen!) .txt-Datei und die Speicherung in der Variablen "pfad" lässt sich einfach bewerkstelligen:

@ECHO off
SETLOCAL enabledelayedexpansion

REM
REM Testprogramm
REM Auslesen einer einzeiligen .txt-Datei
REM Speicherung des Ergebnisses 
REM in der Variable "pfad"
REM
REM http://www.supportnet.de/threads/1638134
REM
REM (c) batti-batch
REM
REM erstellt am 21.11.2007
REM 
REM Batch lauffaehig ab Windows 2000
REM 


SET "quell_datei=Dateiname incl. Laufwerk und Pfad"


FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET pfad=%%i
ECHO !pfad!
)



Viel Spass beim Testen.

Herzliche Grüße

batti-batch

Antwort 18 von Schamhorst vom 21.11.2019, 11:49 Options

danke schön, aber geht das nicht einfacher? ich versteh nämlcih rein gar nichts. mit dem for befehl macht man den auslesevorgang doch für jede variable, oder?
z.b. Was heißt delims?
oder %%i?
oder /f
xD
Kannst du das mal bitte noch erläutern?
Dankeschön
Gruß fabian

Antwort 19 von batti-batch vom 21.11.2019, 12:39 Options

Hallo Fabian,


das Auslesen einer .txt-Datei mit einer
FOR
-Schleife geht wirklich sehr einfach.

Die Funktion ist zwar nicht unbedingt trivial, aber wenn man sich einmal daran gewöhnt hat, mag man sie nicht mehr missen. Eine andere Wahl bleibt ohnehin nicht, da es kein anderes Werkzeug vergleichbarer Mächtigkeit in nativem Batch gibt.

Schauen wir uns die
FOR
-Schleife also genauer an.

FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET pfad=%%i
ECHO !pfad!
)


Die Betrachtung beginnt in diesem Fall immer beim Ausdruck in den Klammern, in unserem Beispiel also bei

('FINDSTR . "%quell_datei%"')


Der
FINDSTR
-Befehl sucht nach bestimmten Zeichen(folgen) in einer Datei. Die Option "." (Punkt) steht hier als Wildcard für "alle Zeichen". Über diesen Weg werden alle Zeichen einer Datei zeilenweise ausgegeben.

Der Teil links vom Klammerausdruck

FOR /f "delims=" %%i IN


ermöglicht uns die Verarbeitung.
FOR /f
lässt die Angabe von Befehlen und Dateien innerhalb der Klammer zu. Die Option
"delims="
unterdrückt jede Art von Trennzeichen in der Ausgabe. Die Zählvariable
%%i
ist diejenige Variable, in die das Ergebnis geschrieben wird. "
IN
" verbindet den linken Teil mit dem Klammerausdruck.

Der Teil rechts vom Klammerausdruck

DO (
SET pfad=%%i
ECHO !pfad!
)


ist hier der wegen der Übersichtlichkeit in mehrere Zeilen geschrieben und entspricht

DO (SET pfad=%%i&ECHO !pfad!)


Weil nach dem "
DO
" mehr als ein Befehl folgt, müssen hier Klammern verwendet werden.

Zunächst wird mit

SET pfad=%%i


der Variablen "pfad" der Wert der Zählvariablen
%%i 
zugewiesen.
Der zweite Schritt gibt uns die Variable "pfad" am Bildschirm aus:

ECHO !pfad!


Auffallend ist hier die andere Schreibweise; die sonst eigentlich üblichen Prozentzeichen "%" sind durch Ausrufezeichen "!" ersetzt.
Das hat mit einer Eigenwilligkeit der
FOR
-Schleife zu tun, bei deren Aufruf SOFORT sämtliche Variablen gesetzt werden. Das geht aber in unserem Fall nicht, da ERST die Variable "pfad" mit dem Wert von
%%i 
gefüllt wird und DANACH die Ausgabe am Bildschirm erfolgt.
Damit diese Sache wie gewünscht funktioniert, muss man der
FOR
-Schleife diese verzögerte Variablenauflösung beibringen:

SETLOCAL enabledelayedexpansion


in der zweiten Zeile meines Programmbeispiels "Auslesen einer einzeiligen .txt-Datei" erledigt das.


Weitere interessante Tipps findest Du in den Hilfen zu
SETLOCAL
,
FINDSTR
und
FOR
.



Herzliche Grüße

batti-batch

Antwort 20 von Schamhorst vom 21.11.2019, 12:43 Options

omg......
Bist mir eine Echte Hilfe!
Eine letzte Frage noch:
Wie kann ich eine Datei mit dem Namen test.bat erstellen?
Gruß fabian

Ähnliche Themen

Wie kann die Ausführung einer Batchdatei unterbrochen werden?
chris25x0  12.05.2007 - 136 Hits - 1 Antwort

Batchdatei zum Suchen & Ersetzen
DonFerrando75  11.08.2007 - 111 Hits - 4 Antworten

Eingabeaufforderung ohne Umlaut in Batchdatei
windowsmachtirre  13.06.2007 - 117 Hits - 3 Antworten

Nachkommastelle bei batchdatei
Zaubermaus_23  19.10.2007 - 46 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026