Textdatei (xml) splitten mit vielen Sonderzeichen drin...
Hi zusammen,
ich komme mal wieder mit einem kleinen Problem um die Ecke...
Ich habe ein XML-File das an bestimmten Stellen gesplittet werden soll - Hintergrund:
Ein Konfigurationsfile soll eine Grundkonfiguration enthalten "oberer Teil" und "unterer Teil" und einen "editierbarenTeil" (Mitte) der von den Usern nach Herzenslust zerspielt werden kann. (Es geht nicht anders - die User müssen selber ändern können und es gibt in der Software keine Möglichkeit das Editieren auf einen bestimmten Bereich zu begrenzen. Es geht hier auch nicht um Böswilligkeit oder sowas - die User haben zu etwa 60% die gleichen Anforderungen und die anderen 40% stellen sie sich selbst ein. Das haben sie auch drauf, hat Jahre lang gut funktioniert. Nur wenn in den 60% was geändert werden muss (neue Server, neue Knöpchen die irgendwelche Scripte starten), rennen wir in der Abteilung rum von PC zu PC und die Fehlerquelle ist dementsprechend hoch wenn man pro Arbeitsplatz 30 Häkchen setzt und 10 neue Pfade eingibt...
Es wird die Ansage gelten "was geändert werden darf" bleibt und der Rest ist morgens "sauber"). Jeder Benutzer kann am Tag in seiner Konfiguration ändern was er will, nachts wird sein File eingelesen, der Teil den er editieren durfte wird herausextrahiert, und seine Konfigurationsdatei wird wieder neu zusammengesetzt: Oberer und unterer Teil (ist sauber da durch Admins gepflegt und evtl aktuelle Änderungen sind drin) und mittlerer Teil (der zuvor rausextrahiert wurde) werden also wieder zu einer Datei zusammengesetzt. Die Konfiguration die die Admins pflegen läuft dann genau andersrum, Änderungen im "mittleren Teil" gehen durch das Überbügeln mit den Teilen der User natürlich verloren, was vollkommen ok ist.
Beispiel: Die Zeilen 1-2 und 5-6 sollen dem User jede Nacht übergebügelt werden, 3-4 "bleiben ihm erhalten".
Nun ist das ja im Prinzip kein Problem, Anleitungen zum Splitten und Zusammenfügen von Textdateien gibt es ja hier nicht wenige...
Aber in der xml sind ja ne Menge "böse" Zeichen die einem den Spaß verderben...
So sieht ein Teil aus:
Wie erkläre ich der Batch nun z.B. die Zeile
auszulesen und diese bis einschließlich Item 199 irgendwohin zu legen?
Als Arbeitsgrundlage habe ich das hier was ohne die Sonderzeichen auch einwandfrei funktioniert:
Bin für jeden Tipp dankbar
LG
Tobi
ich komme mal wieder mit einem kleinen Problem um die Ecke...
Ich habe ein XML-File das an bestimmten Stellen gesplittet werden soll - Hintergrund:
Ein Konfigurationsfile soll eine Grundkonfiguration enthalten "oberer Teil" und "unterer Teil" und einen "editierbarenTeil" (Mitte) der von den Usern nach Herzenslust zerspielt werden kann. (Es geht nicht anders - die User müssen selber ändern können und es gibt in der Software keine Möglichkeit das Editieren auf einen bestimmten Bereich zu begrenzen. Es geht hier auch nicht um Böswilligkeit oder sowas - die User haben zu etwa 60% die gleichen Anforderungen und die anderen 40% stellen sie sich selbst ein. Das haben sie auch drauf, hat Jahre lang gut funktioniert. Nur wenn in den 60% was geändert werden muss (neue Server, neue Knöpchen die irgendwelche Scripte starten), rennen wir in der Abteilung rum von PC zu PC und die Fehlerquelle ist dementsprechend hoch wenn man pro Arbeitsplatz 30 Häkchen setzt und 10 neue Pfade eingibt...
Es wird die Ansage gelten "was geändert werden darf" bleibt und der Rest ist morgens "sauber"). Jeder Benutzer kann am Tag in seiner Konfiguration ändern was er will, nachts wird sein File eingelesen, der Teil den er editieren durfte wird herausextrahiert, und seine Konfigurationsdatei wird wieder neu zusammengesetzt: Oberer und unterer Teil (ist sauber da durch Admins gepflegt und evtl aktuelle Änderungen sind drin) und mittlerer Teil (der zuvor rausextrahiert wurde) werden also wieder zu einer Datei zusammengesetzt. Die Konfiguration die die Admins pflegen läuft dann genau andersrum, Änderungen im "mittleren Teil" gehen durch das Überbügeln mit den Teilen der User natürlich verloren, was vollkommen ok ist.
Beispiel: Die Zeilen 1-2 und 5-6 sollen dem User jede Nacht übergebügelt werden, 3-4 "bleiben ihm erhalten".
Server1=10.20.30.40
Pfad3=c:\test
Bildschirmhintergrund=Augenkrebs
Knöpfchensortierung=Weglaufen will
Server4=20.30.40.50
Pfad6=d:\test2
Nun ist das ja im Prinzip kein Problem, Anleitungen zum Splitten und Zusammenfügen von Textdateien gibt es ja hier nicht wenige...
Aber in der xml sind ja ne Menge "böse" Zeichen die einem den Spaß verderben...
So sieht ein Teil aus:
<Struct name="actionItem[1]">
<String name="name">Knopf1</String>
<String name="groupName">Übersicht</String>
<Int name="confirmation">0</Int>
<Int name="numActions">1</Int>
<Int name="idIcon">251</Int>
<Struct name="actions">
<Int name="actionId">1</Int>
<Struct name="aCopy">
<String name="destFolder">\\server\pfad</String>
<Int name="setDodaysDate">0</Int>
<Int name="allowMove">0</Int>
<Int name="useCopyDelete">0</Int>
Wie erkläre ich der Batch nun z.B. die Zeile
<Struct name="actionItem[100]">
auszulesen und diese bis einschließlich Item 199 irgendwohin zu legen?
Als Arbeitsgrundlage habe ich das hier was ohne die Sonderzeichen auch einwandfrei funktioniert:
set "Trenn=xxx"
set /a Nr=1001
set "Pfad=%~dpn1"
set "Ext=%~x1"
for /f "delims=" %%i in ('type "%~1"') do call :ProcessLine "%%i"
goto :eof
:ProcessLine
if %1 == "%Trenn%" goto :NewFile
echo %~1>>"%Pfad%-%Nr:~1%%Ext%"
goto :eof
:NewFile
set /a Nr+=1
Bin für jeden Tipp dankbar
LG
Tobi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 116031
Url: https://administrator.de/contentid/116031
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Tobi,
ich könnte Dir mit VB weiterhelfen...(was sicherlich nicht schlechter sein wird...) Allerdings müsste ich wissen, was Du jetzt genau ersetzt haben willst. Beispiel:
xmlDatei besteht aus:
Bereich oben
Bereich mitte
Bereich unten
Bereich mitte wird begrenzt durch
Richtig?
Bereich mitte soll gesichert werden pro User und "Bereich oben" und "Bereich unten" sollen aus vordefinierten Standarddateien eingelesen werden und am Tagesanfang/Ende mit der gesicherten "Bereich Mitte" kombiniert werden?
xmlDatei nachher
Bereich oben (vordefiniert durch Admins)
Bereich mitte (vorherige Einstellungen des Users)
Bereich unten (vordefiniert durch Admins)
Sind diese Bedingungen korrekt?
Gruß
Markus
ich könnte Dir mit VB weiterhelfen...(was sicherlich nicht schlechter sein wird...) Allerdings müsste ich wissen, was Du jetzt genau ersetzt haben willst. Beispiel:
xmlDatei besteht aus:
Bereich oben
Bereich mitte
Bereich unten
Bereich mitte wird begrenzt durch
<Struct name="actionItem[100]">
...
...
<Struct name="actionItem[200]">
Richtig?
Bereich mitte soll gesichert werden pro User und "Bereich oben" und "Bereich unten" sollen aus vordefinierten Standarddateien eingelesen werden und am Tagesanfang/Ende mit der gesicherten "Bereich Mitte" kombiniert werden?
xmlDatei nachher
Bereich oben (vordefiniert durch Admins)
Bereich mitte (vorherige Einstellungen des Users)
Bereich unten (vordefiniert durch Admins)
Sind diese Bedingungen korrekt?
Gruß
Markus