noobie99
Goto Top

Batch Skript Problem, ersetzen einer Zeile unterhalb einer bestimmten Zeile

Hallo Leute,

wahrscheinlich lacht man mich hier gleich aus, aber ich habe ein Problem mit einem Batch script. Ich möchte gerne eine Zeile einer Config per Script ändern, welches in dem File öfter vorkommt, aber ich nur diese eine Zeile ändern möchte. Anhand einer darüberliegenden Zeile möchte diese Zeile identifizieren können und die darunterliegende Zeile muss dann ersetzt werden.

Ungefähr so:

Vorher:
TextA
TextB
TestC
<connect> 192.168.0.10 </connect>
<enable>0</enable>

TextX
TextY
TextZ


Nachher:
TextA
TextB
TestC
<connect> 192.168.0.10 </connect>
<enable>1</enable>

TextX
TextY
TextZ

Die Zeile mit <enable> kommt leider in dem Config File öfter vor, so dass ich dir gewünschte Zeile immer unterhalb von <connect> ersetzen möchte durch einen entsprechenden Wert.

Könnte mir da jemand vielleicht weiterhelfen?

Danke!

Content-ID: 319505

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

rubberman
rubberman 30.10.2016 um 02:15:40 Uhr
Goto Top
Hallo noobie99.

Das bisschen Inhalt, das du gepostet hast, sieht nach XML aus. So etwas bearbeitet man mit einer Sprache die das DOM unterstützt (PowerShell, VBScript, JScript, ...). Batch ist ungeeignet, allein schon weil mit einiger Wahrscheinlichkeit das Charset nicht passt (vermutlich UTF-8).
Um dir weiterhelfen zu können, benötigen wir den exakten Aufbau der Datei.

Grüße
rubberman
Endoro
Endoro 30.10.2016 um 22:47:28 Uhr
Goto Top
Hey,
ich würde hier "sed" empfehlen, falls es sich nicht um UTF-8/-16 handelt.
Lade doch deine Datei als zip auf einen Filehoster (Dopbox o.ä.).

Gruß, Endoro
timlg07
timlg07 02.11.2016 um 23:16:08 Uhr
Goto Top
Du könntest mit dem findstr Befehl in einer for schleife nach der Zeile mit dem connect suchen, dir die Zeilenzahl ausgeben lassen, eins dazuzählen, diese Zeile dann bearbeiten und alles zusammen in ne neue Datei schreiben. Wenn du damit nichts anfangen kannst, schreib ich dir gern ne kleine Batch zusammen ;) geht natürlich nur wenn die Codierung etc passt.
LG Tim