ganzbaf
Goto Top

Mit Batch XML Tags ergänzen

Servus beinand,

Ich möchte gerne mit Native Batch Befehlen alle XML-Dateien in einem Verzeichnis folgendermaßen ergänzen:
Aus:
<header>
</header>
<record>
</record>
<record>
</record>
<footer>
</footer>
soll werden:
<header>
</header>
<body>
<record>
</record>
<record>
</record>
</body>
<footer>
</footer>

Bisher bin ich soweit:

@echo off & setlocal enableDelayedExpansion
for %%i In (%BASE_DIR%\input\*.xml) do (
rem Zeile </header> finden
for /f "delims=:" %%s in ('findstr /r /i /n "$\/header\>" %%i') do if not defined Zeile set Zeile=%%s  
echo %%~ni: Zeile %Zeile% >> %BASE_DIR%\LOG\Zeile.txt
rem Zeile danach einsetzen
rem Zeile <footer> finden
rem Zeile davor einsetzen
)

Kann mir bitte jemand sagen, ob ich auf dem richtigen Weg bin. Insbesondere würde mich interessieren, wo mein Suchausdruck falsch ist, weil mein Zeilen-Log immer leer bleibt.

Für ernstgemeine Batch-Schnipsel bin ich immer dankbar.

Gruß, Ganzbaf

Content-Key: 117009

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

Printed on: April 25, 2024 at 01:04 o'clock

Mitglied: 77559
77559 May 28, 2009 at 13:49:47 (UTC)
Goto Top
Hallo Ganzbaf,

das $ Zeichen steht in einer RegEx für das Zeilenende und macht in deinem Findstr kiene Sinn.

Ausserdem kannst due in einem CMd Fenster die Befehle manuell testen bevor du sie in einem Batch einbaust.
Die Environment Variablen in deiner Zeile 02 hast du schon ausserhalb der Batch datei gesetzt?

Gruß
LotPings
Member: ganzbaf
ganzbaf May 28, 2009 at 14:42:28 (UTC)
Goto Top
Hallo,

Also die Umgebungsvariablen habe ich schon vorher gesetzt und das $-zeichen habe ich rausgenommen. (hatte geglaubt, das passt, weil ich am Zeilenende suche)

Damit wäre der Batch jetzt so:

@echo off & setlocal enableDelayedExpansion
set BASE_DIR=D:\TEST
for %%i In (%BASE_DIR%\input\*.xml) do (
rem Zeile </header> finden
set Zeile=
for /f "delims=:" %%s in ('findstr /r /i /n "\/header\>" "%%i"') do if not defined Zeile set Zeile=%%s  
echo %%~ni: Zeile %Zeile% >> %BASE_DIR%\LOG\Zeile.txt
rem Zeile danach einsetzen
rem Zeile <footer> finden
rem Zeile davor einsetzen


Wenn ich am Prompt
for /f "delims=:" %s in ('findstr /r /i /n "\/header\>" %BASE_DIR%\INPUT\ABC.XML') do if not defined Zeile set Zeile=%s  
eingebe, wird die richtige Zeilennummer für die Datei zurückgegeben.