leizmeister
Goto Top

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

Content-Key: 358095

Url: https://administrator.de/contentid/358095

Printed on: April 26, 2024 at 22:04 o'clock

Mitglied: 134998
134998 Dec 14, 2017 updated at 14:51:58 (UTC)
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
    )
  )
))