ini-Datei mit for Schleife auslesen, Zeilen, die mit Semikolon beginnen, fehlen
Geht um folgendes:
rules.ini-Datei (Command and Conquer-Alarmstufe Rot 1) soll mittels batch-Datei bearbeitet werden.
zB Money=10000 durch Money=20000 ersetzen etc. (wir basteln bei unseren LANs gerne an den einzelnen Parametern des Games herum)
Suchen & ersetzen ist mir zu aufwändig, da teilweise 10x der gleiche Wert ersetzt werden muss und das mit einer Batch einfach userfreundlicher wäre.
OS Win XP Prof SP2
Auszug aus der Batch:
Nun aber folgendes Problem:
Zeilen die mit einem Strichpunkt beginnen, werden beim bearbeiten gelöscht
(fehlen bereits in der temp.tmp)
Die Zeilen mit den Strichpunkten am Anfang werden jedoch vom Game als Sprungmarken verwendet, sprich müssen vorhanden bleiben...
Bzw. als 2.te Frage:
Gibt es eine Möglichkeit, nach einem kompletten "Zeilenblock" (also mehrere aufeinanderfolgende Zeilen) zu suchen und diese zu ersetzen (meine Lösung ist ja nur für einzelne Zeilen)
Danke schon mal für eure Hilfe!
Gruß
torch
rules.ini-Datei (Command and Conquer-Alarmstufe Rot 1) soll mittels batch-Datei bearbeitet werden.
zB Money=10000 durch Money=20000 ersetzen etc. (wir basteln bei unseren LANs gerne an den einzelnen Parametern des Games herum)
Suchen & ersetzen ist mir zu aufwändig, da teilweise 10x der gleiche Wert ersetzt werden muss und das mit einer Batch einfach userfreundlicher wäre.
OS Win XP Prof SP2
Auszug aus der Batch:
: startkapital
SET /P startkapital="Startkapital: "
SET ersetzen="Money=10000"
For /F "tokens=1,2 delims=" %%A in (rules.ini) Do (
Echo %%A>>temp.tmp
If "%%A"==%ersetzen% (
Echo Money=%startkapital%>>temp.tmp))
pause
type temp.tmp | find /v %ersetzen%>rules.ini
DEL temp.tmp
GOTO menu
Zeilen die mit einem Strichpunkt beginnen, werden beim bearbeiten gelöscht
(fehlen bereits in der temp.tmp)
Die Zeilen mit den Strichpunkten am Anfang werden jedoch vom Game als Sprungmarken verwendet, sprich müssen vorhanden bleiben...
Bzw. als 2.te Frage:
Gibt es eine Möglichkeit, nach einem kompletten "Zeilenblock" (also mehrere aufeinanderfolgende Zeilen) zu suchen und diese zu ersetzen (meine Lösung ist ja nur für einzelne Zeilen)
Danke schon mal für eure Hilfe!
Gruß
torch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121350
Url: https://administrator.de/contentid/121350
Ausgedruckt am: 25.11.2024 um 05:11 Uhr
4 Kommentare
Neuester Kommentar
Auch Dir ein freundliches Hallo, torch88!
Versuch es mit folgender Schreibweise:
Anstelle von "§" kannst Du ein beliebiges in der Datei nicht vorkommendes Zeichen verwenden.
Hintergrund: ";" steht defaultmäßig für "end of line", wodurch der Rest der Zeile igrnoriert wird.
Grüße
bastla
Versuch es mit folgender Schreibweise:
For /F "eol=§ tokens=1,2 delims=" %%A in (rules.ini) Do (
Hintergrund: ";" steht defaultmäßig für "end of line", wodurch der Rest der Zeile igrnoriert wird.
Grüße
bastla
Hallo torch88!
Flexibelste Variante:
Je eine Texdatei "Alt.txt" und "Neu.txt" mit dem gesamten Block erstellen und das Ersetzen mit einem VBScript erledigen:
Bei Bedarf ließe sich das Ganze auch in einen Batch "einbetten", dürfte aber wohl nicht nötig sein ...
Grüße
bastla
Flexibelste Variante:
Je eine Texdatei "Alt.txt" und "Neu.txt" mit dem gesamten Block erstellen und das Ersetzen mit einem VBScript erledigen:
Ini = "D:\rules.ini"
Alt = "D:\Alt.txt"
Neu = "D:\Neu.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
T = fso.OpenTextFile(Ini).ReadAll
A = fso.OpenTextFile(Alt).ReadAll
N = fso.OpenTextFile(Neu).ReadAll
fso.CreateTextFile(Ini, True).Write Replace(T, A, N)
Grüße
bastla