Wie elemeniere von einer FOR-Variablen mit einem XML Tag Inhalt die Leerzeichen?
Hallo!
Ich habe folgendes Problemen:
Habe ein Batch-Script mit welchem ich eine XML-Datei auslese.
Sinn des Ganzen ist es, einen neuen XML-Tag in die XML-Datei hinzuzufügen.
Gut, die Vorgangsweise wäre diese:
1) Einlesen der vorhandenen XML-Datei
2) Ausgabe der eingelesenen Werte + des neuen Tags in eine Temporäre XML-Datei
3) Originale XML Datei löschen
4) Neue originale XML-Datei anlegen und mit Daten aus der Temp-Datei füllen
5) Temp-Datei löschen - fertig.
An und für sich funktioniert das auch ohne Probleme - leider nur beim ersten Mal
Denn es werden nach jedem Überschreiben am letzten Tag der XML-Datei Leerzeichen hinzugefügt, und das endet dann ab dem nochmaligen aufruf des Scripts darin, dass der neu hinzufügende Tag nicht mehr mitgegeben wird
aber seht selbst:
Das problem ist die If-Bedingung, besser gesagt die Variable %%f.
zum Schluss steht eben in dieser Variablen der Wert </projects> aber mit ein paar Leerzeichen folgend.
So was ich bis jetzt herausgefunden habe, gibt es leider keinen direkten Weg einfach die Leerzeichen am Ende der %%f Variablen zu elemenieren
Auch dass ich einfach die ersten 11 Zeichen von %%f nehme geht zumindest nach meiner Info nicht
.. da ich ja %var:~11% nicht machen kann 
Das Aufrufen eine Funktion mittel Call und dann den jeweiligen Wert übergeben, bringt auch Probleme, da der Wert der Variabeln eben </projects> und "<>" dann Probleme bereitet
Also, für Lösungsvorschläge wäre ich sehr dankbar!
LG
sandi81
[Edit Biber] Codefragment in Codefragment-Tags gesetzt. [/Edit]
Ich habe folgendes Problemen:
Habe ein Batch-Script mit welchem ich eine XML-Datei auslese.
Sinn des Ganzen ist es, einen neuen XML-Tag in die XML-Datei hinzuzufügen.
Gut, die Vorgangsweise wäre diese:
1) Einlesen der vorhandenen XML-Datei
2) Ausgabe der eingelesenen Werte + des neuen Tags in eine Temporäre XML-Datei
3) Originale XML Datei löschen
4) Neue originale XML-Datei anlegen und mit Daten aus der Temp-Datei füllen
5) Temp-Datei löschen - fertig.
An und für sich funktioniert das auch ohne Probleme - leider nur beim ersten Mal
Denn es werden nach jedem Überschreiben am letzten Tag der XML-Datei Leerzeichen hinzugefügt, und das endet dann ab dem nochmaligen aufruf des Scripts darin, dass der neu hinzufügende Tag nicht mehr mitgegeben wird
....
:ModifyXML
ECHO Read %file% and create temp file >> c:\acm.log
FOR /f "delims=;" %%f IN (%file%) DO (
IF "%%f" == "</projects>" (
ECHO ^<project name^="%xml_projectname%" type^="%xml_type%" config^="%xml_projectconfig%" app_pool^="%xml_apppool%" backupDays^="%xml_budays%" web_name^="%xml_webname%" /^> >> tmp_%file%
)
ECHO %%f >> tmp_%file%
)
...
Das problem ist die If-Bedingung, besser gesagt die Variable %%f.
zum Schluss steht eben in dieser Variablen der Wert </projects> aber mit ein paar Leerzeichen folgend.
So was ich bis jetzt herausgefunden habe, gibt es leider keinen direkten Weg einfach die Leerzeichen am Ende der %%f Variablen zu elemenieren
Auch dass ich einfach die ersten 11 Zeichen von %%f nehme geht zumindest nach meiner Info nicht
Das Aufrufen eine Funktion mittel Call und dann den jeweiligen Wert übergeben, bringt auch Probleme, da der Wert der Variabeln eben </projects> und "<>" dann Probleme bereitet
Also, für Lösungsvorschläge wäre ich sehr dankbar!
LG
sandi81
[Edit Biber] Codefragment in Codefragment-Tags gesetzt. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133950
Url: https://administrator.de/forum/wie-elemeniere-von-einer-for-variablen-mit-einem-xml-tag-inhalt-die-leerzeichen-133950.html
Ausgedruckt am: 18.05.2025 um 19:05 Uhr
3 Kommentare
Neuester Kommentar
Moin sandi81,
willkommen im Forum.
Wenn du Leerzeichen zwischen "Echo derEchotext" und dem Pipe-Symbol ">>" stehen lässt, werden die eben auch mit als "Text" angegesehen. und geECHOed.
Bei dir steht:
> Streiche das als "_" dargestellte Zeichen.
Wenn du den Batch halt 20x auf eine Textdatei anwendest und jedes mal in jeder Zeile ein unnötiges Leerzeichen beim gewollten Eins-zu-Eins-übertragen hinzukommt, dann hast du ziemlich schnell ein paar Leerzeichen zuviel.
Grüße
Biber
[edit] zu langsam... [/edit]
willkommen im Forum.
Wenn du Leerzeichen zwischen "Echo derEchotext" und dem Pipe-Symbol ">>" stehen lässt, werden die eben auch mit als "Text" angegesehen. und geECHOed.
Bei dir steht:
ECHO %%f >> tmp_%file%
-- == unnötiges Leerzeichen als "_" dargestellt
ECHO %%f_>> tmp_%file%
Wenn du den Batch halt 20x auf eine Textdatei anwendest und jedes mal in jeder Zeile ein unnötiges Leerzeichen beim gewollten Eins-zu-Eins-übertragen hinzukommt, dann hast du ziemlich schnell ein paar Leerzeichen zuviel.
Grüße
Biber
[edit] zu langsam... [/edit]