Suchen und Ersetzen mit Counter
Hallo,
ich versuche mich gerade an das Thema Batch heranzutasten und finde die Anleitungen hier echt spitze. Vor allem die Anleitung zum Thema For-Schleifen hat mir sehr geholfen. Leider komme ich mit meinem Problem trotzdem nicht weiter. Vielleicht hat ja jemand von euch einen Lösungsansatz für mich.
Ausgangssituation:
Datai soll eingelesen werden und die darin enthaltenen Zahlen sollen ersetzt und dann jeweils um 1 erhöht werden.
Inhalt der Datei sieht in etwa so aus:
[Area.100]
Title=Name
Local=PathXYZ
Active=TRUE
Required=FALSE
Layer=100
[Area.101]
Title=NAme
Local=PathXYZ
Active=TRUE
Required=FALSE
Layer=101
[Area.102]
Title=Name
Local=PathXYZ
Active=TRUE
Required=FALSE
Layer=102
Ziel ist es mit einem Startwert alle Werte bei Area und Layer zu überschreiben also aus [Aerea.100] und Layer=100 soll dann z.B: [Aerea.207] und Layer=207 werden, aus 101=208, 102=209 usw.
Ich habe mir daher erstmal eine For-Schleife gebaut, die die Datei einliest und Zeile für Zeile wieder ausgibt mit dem Zusatz, dass ich die Area mit einem anderen Wert ersetze.
Die Überlegung war nun eine zweite For-Schleife zu kombinieren, daher auch die delayedexpansions. Allerdings weißt ich nicht, wie ich diese richtig miteinander kombinieren kann.
Über Hilfe würde ich mich sehr freuen.
Viele Grüße
ich versuche mich gerade an das Thema Batch heranzutasten und finde die Anleitungen hier echt spitze. Vor allem die Anleitung zum Thema For-Schleifen hat mir sehr geholfen. Leider komme ich mit meinem Problem trotzdem nicht weiter. Vielleicht hat ja jemand von euch einen Lösungsansatz für mich.
Ausgangssituation:
Datai soll eingelesen werden und die darin enthaltenen Zahlen sollen ersetzt und dann jeweils um 1 erhöht werden.
Inhalt der Datei sieht in etwa so aus:
[Area.100]
Title=Name
Local=PathXYZ
Active=TRUE
Required=FALSE
Layer=100
[Area.101]
Title=NAme
Local=PathXYZ
Active=TRUE
Required=FALSE
Layer=101
[Area.102]
Title=Name
Local=PathXYZ
Active=TRUE
Required=FALSE
Layer=102
Ziel ist es mit einem Startwert alle Werte bei Area und Layer zu überschreiben also aus [Aerea.100] und Layer=100 soll dann z.B: [Aerea.207] und Layer=207 werden, aus 101=208, 102=209 usw.
Ich habe mir daher erstmal eine For-Schleife gebaut, die die Datei einliest und Zeile für Zeile wieder ausgibt mit dem Zusatz, dass ich die Area mit einem anderen Wert ersetze.
@echo off
setlocal enabledelayedexpansion
set SW=207
For /F "eol=; tokens=1 delims=" %%A in (scenery.cfg) do (
set Line=%%A
set FirstChar=!Line:~0,1!
If $!FirstChar!$==$[$ (
echo [Area.!W!] >>Test.txt
) ELSE (
echo !Line! >>Test.txt
))
Die Überlegung war nun eine zweite For-Schleife zu kombinieren, daher auch die delayedexpansions. Allerdings weißt ich nicht, wie ich diese richtig miteinander kombinieren kann.
@echo off
setlocal enabledelayedexpansion
set /a SW=255
For /L %%B in (%SW%,1,400) Do (
set /a "W=%%B + 1"
echo !W! >>Test.txt
)
Über Hilfe würde ich mich sehr freuen.
Viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 358095
Url: https://administrator.de/forum/suchen-und-ersetzen-mit-counter-358095.html
Ausgedruckt am: 04.05.2025 um 08:05 Uhr
1 Kommentar

@echo off &setlocal enabledelayedexpansion
set /a SW=207
>Test.txt (for /f "delims=" %%a in (scenery.cfg) do (
set line=%%a
if "!Line:~0,1!" == "[" (
echo([Area.!SW!]
set /a SW +=1
) else(
if /i "!line:~0,6" == "Layer=" (
echo(Layer=!SW!
)else (
echo(%%a
)
)
))