leizmeister

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.

@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 face-smile
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 358095

Url: https://administrator.de/forum/suchen-und-ersetzen-mit-counter-358095.html

Ausgedruckt am: 04.05.2025 um 08:05 Uhr

134998
134998 14.12.2017 aktualisiert um 15:51:58 Uhr
Goto Top
@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
    )
  )
))