bbuser
Goto Top

Batch - Mehrere Tausend XML Dateien in monatlich neuen Ordnern nach verschiedenen Strings durchsuchen

Die XML Dateien enthalten Kundennummern in XML Tags. Die Anzahl der jeweiligen Kundennummern ist von Interesse.

Hallo,

mal wieder eine kleine Batchaufgabe face-smile

Habe schon hier Mehrere Logfiles in einem Ordner nach bestimmten Textinhalten durchsuchen und in anderer LogDatei Dateiname speichern geschaut. Beides ist aber nicht genau das was ich suche.

Details:

Wir bekommen via FTP XML Dateien. Diese landen später in Ordnern mit folgendem Schema: %BlaBla%_old_201011. Für jeden Monat gibt es also einen Ordner. Über den Monat kommen so gerne mal mehr als 6000 XML Dateien zusammen.

Die Dateien heißen immer anders, sind aber was die XML Tags angeht gleich aufgebaut. Der Inhalt der Tags variiert von Kunde zu Kunde. Jede XML enthält auch den Tag <accountnummer>%Kundennummer%</accountnummer>.

Die XML Dateien des Ordners sollen nun z.B: täglich oder wöchentlich (via scheduled Tasks) duchsucht werden. Interessant hierbei ist nun die Häufigkeit der Kundennummern (Pro XML immer genau eine Kundennummer). Ein Suchlauf ergibt also z.B: das Kundennummer 12345 10x gefunden wurde (also in 10 XMLs) und Kundennummer 55555 20x (also in 20 XMLs). Diese Werte sollen besten Falls in eine HTML geschrieben werden, welche eine Tabelle enthält.

Öffnet man die HTML sollen die Kundennummern (und evtl. Kundennamen) dann sauber nebeneinander stehen und darunter die Häufigkeiten im jeweligen Monat.

Ich denke über einen Findstr lässt sich das sicher lösen. Wenn man sich dann merkt bei welcher Datei man beim letzten Suchlauf war muss nicht wieder alles neu gescannt werden und die Zahlen (Häufigkeit) sollten auch stimmen.

Nun die entscheidene Frage - Lösbar? face-smile

Grüsse

Content-Key: 154466

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

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

Member: bastla
bastla Nov 05, 2010 at 20:30:13 (UTC)
Goto Top
Hallo BBUser!

Soferne es bereits einen Index aller Kundennummern (als Textdatei "KundenNr.txt" mit jeweils einer Nummer je Zeile) gäbe und
<accountnummer>%Kundennummer%</accountnummer>
jeweils alleine in einer Zeile stünde, ginge das Ermitteln der Werte etwa so:
@echo off & setlocal
set "Ein=D:\XML-Ordner"  
set "Aus=D:\Auswertung.txt"  
set "Index=D:\KundenNr.txt"  
set "Such=\<accountnummer\>"  
set "Such2=\</accountnummer\>"  

del "%Aus%" 2>nul  
pushd "%Ein%"  
for /f "usebackq delims=" %%i in ("%Index%") do for /f %%a in ('findstr /m /c:"%Such%%%i%Such2%" *.xml^|find /i /c "xml"') do >>"%Aus%" echo %%i %%a  
popd
Wenn der Index erst aufgebaut werden muss, indem die Kundennummern aus allen Dateien herausgesucht werden, wäre es tatsächlich sinnvoll, eine Mehrfachverarbeitung zu verhindern - abhängig von zB der verwendeten Backupsoftware könnte dazu das Archiv-Flag verwendet werden:
@echo off & setlocal
set "Ein=D:\XML-Ordner"  
set "Aus=D:\Auswertung.txt"  
set "Index=D:\KundenNr.txt"  
set "Such=\<accountnummer\>"  
set "Such2=\</accountnummer\>"  

pushd "%Ein%"  
if not exist "%Index%" copy nul "%Index%">nul  
for /f "delims=" %%i in ('dir /b /aa *.xml') do for /f "tokens=2 delims=<>" %%a in ('findstr /c:"%Such%" "%%i"') do findstr /x "%%a" "%Index%">nul || >>"%Index%" echo %%a  
attrib -a *.xml

del "%Aus%" 2>nul  
for /f "usebackq delims=" %%i in ("%Index%") do for /f %%a in ('findstr /m /c:"%Such%%%i%Such2%" *.xml^|find /i /c "xml"') do >>"%Aus%" echo %%i %%a  
popd
Um die Ausgabe in eine HTML-Datei zu schreiben, könntest Du den gesamten Code, der vor der zu füllenden Tabelle benötigt wird, als "HTML1.txt" und alles danach als "HTML2.txt" vorbereiten und anstatt
del "%Aus%" 2>nul
die Zeile
copy HTML1.txt "%Aus%">nul
verwenden, die Ausgabe der einzelnen Kunden mit den entsprechenden Tags versehen (Achtung, "<" und ">" müssen als "^<" bzw "^>" maskiert ausgegeben werden) und als letzte Zeile noch
>>"%Aus%" type HTML2.txt
hinzufügen.

Grüße
bastla

P.S.: Alles, was da oben steht, sind übrigens unbewiesene Behauptungen (= ungetestet) face-wink ...

[Edit] Suche präziser gestaltet [/Edit]
Member: BBUser
BBUser Nov 05, 2010 at 21:55:20 (UTC)
Goto Top
Hallo Bastla,

danke für die wie immer sehr kompetente Antwort.

Die Kundennummern sind bekannt und können ohne Probleme in einer Datei stehen. In den XMLs steht diese auch in einer eigenen Zeile.

Ein Anfang ist das schonmal.

Wird getestet face-smile Ich berichte dann.
Grüße

edit Funktioniert in kleinem Umfang schonmal sehr gut. Weiter testen.... face-smile Und schauen wie das mit dem HTML klappt.

edit2
Leider werden ähnliche Kundennummer doppelt gezählt. Bsp.: 5095 & 50951. Hier wird dann bei 50951 einmal 5095 und einmal 50951 gezählt. Habe ich also 2 XML Dateien - einmal vom Kunden 5095 und einmal vom 50951 kommt das Script am Ende auf eine Gesamtzahl von 3 (Da 3x 5095 gefunden wurde). Kann man das lösen?

edit3 // HTML geht auch - Nur wie füge ich nach jeder Kundennummer / Anzahl zB. ein einfaches <br> für einen Zeilenumbruch ein? Oder eben ein <td> für ne Tabelle oder anderen code? In HTML1 und 2 kann ich die Sachen ja wunderbar für den Header und Footer mitgeben, was einfach, aber genial ist.
Member: bastla
bastla Nov 05, 2010 at 22:44:25 (UTC)
Goto Top
Hallo BBUser!

An unterschiedliche Länge von Kundennummern hatte ich tatsächlich nicht gedacht. face-sad

Ich bessere oben ein wenig nach ...
Nur wie füge ich nach jeder Kundennummer / Anzahl zB. ein einfaches <br> für einen Zeilenumbruch ein?
Etwa so:
... echo %%i %%a ^<br^>
Grüße
bastla
Member: BBUser
BBUser Nov 06, 2010 at 13:34:32 (UTC)
Goto Top
Teste gerade und die Anzahl wird schon fast richtig dargestellt.

Script:
::@echo off & 
setlocal
set "Ein=F:\XMLtest\XML-Ordner"  
set "Aus=F:\XMLtest\XML-OrdnerAuswertung.html"  
set "Index=F:\XMLtest\KundenNr.txt"  
set "Such=\<accountref\>"  
set "Such2=\</accountref\>"  

copy HTML1.txt "%Aus%">nul  
pushd "%Ein%"  
if not exist "%Index%" copy nul "%Index%">nul  
for /f "delims=" %%i in ('dir /b /aa *.xml') do for /f "tokens=2 delims=<>" %%a in ('findstr /c:"%Such%" "%%i"') do findstr /x "%%a" "%Index%">nul || >>"%Index%" echo %%a  
attrib -a *.xml

del "%Aus%" 2>nul  
for /f "usebackq delims=" %%i in ("%Index%") do for /f %%a in ('findstr /m /c:"%Such%%%i%Such2%" *.xml^|find /i /c "xml"') do >>"%Aus%" echo %%i %%a  
popd
>>"%Aus%" type HTML2.txt  
pause

Die Ausgabe der HTML sieht jedoch komisch aus.

5095 1 2323 0 50951 1 50952 1 50953 2 accountref 0 - Alles in einer Reihe ist erstmal ok. Aber das Accountref schreibt das Script komischer Weise in die KundenNr.txt und später landet es in der Ausgabe. Verstehe nur nicht warum das so ist. ?

Grüße
Member: bastla
bastla Nov 06, 2010 at 14:01:45 (UTC)
Goto Top
Hallo BBuser!
Alles in einer Reihe ist erstmal ok
... und kann auch nicht anders sein, solange in Zeile 16 (lässt sich übrigens leichter referenzieren, wenn Du Deinen Code unter entsprechenden postest) nur "echo %%i %%a" steht.
Aber das Accountref schreibt das Script komischer Weise in die KundenNr.txt
Da der Begriff als "Suchbegriff" verwendet wird, muss er aus einer Zeile stammen, in welcher er das 2. "token" darstellt und die daher nicht der angenommenenen Struktur, zB
<accountref>5095</accountref>
entspricht; die Zerlegung erfolgt ja anhand der Trennzeichen "<" und ">", sodass sich also für diese Zeile die "tokens"
1: accountref2: 50953: /accountref
ergeben - befindet sich zB am Beginn der Zeile zumindest ein Leerzeichen (oder zumindest ein anderes Zeichen als "<" oder ">"), verschiebt sich die Nummerierung. Soferne es nur um Leerzeichen ginge, ließe sich die Liste der Trennzeichen ("delims") in Zeile 12 einfach erweitern:
for /f "delims=" %%i in ('dir /b /aa *.xml') do for /f "tokens=2 delims=<> " %%a in ...
Grüße
bastla
Member: BBUser
BBUser Nov 07, 2010 at 20:31:19 (UTC)
Goto Top
So,

damit alle was davon haben - funktioniert erstmal soweit - nur der Code aus HTML1.txt landet irgendwie nicht mehr in der Ausgabedatei. Für die Hilfe schonmal ein großes Dankeschön an Bastla.

@echo off & setlocal
set "Ein=F:\XMLtest\XML-Ordner"  
set "Aus=F:\XMLtest\XML-OrdnerAuswertung.html"  
set "Index=F:\XMLtest\KundenNr.txt"  
set "Such= <accountref>"  
set "Such2=</accountref>"  

copy HTML1.txt "%Aus%">nul  
pushd "%Ein%"  
if not exist "%Index%" copy nul "%Index%">nul  
for /f "delims=" %%i in ('dir /b /aa *.xml') do for /f "tokens=2 delims=<>" %%a in ('findstr /c:"%Such%" "%%i"') do findstr /x "%%a" "%Index%">nul || >>"%Index%" echo %%a  
attrib -a *.xml

del "%Aus%" 2>nul  
for /f "usebackq delims=" %%i in ("%Index%") do for /f %%a in ('findstr /m /c:"%Such%%%i%Such2%" *.xml^|find /i /c "xml"') do >>"%Aus%" echo %%i %%a ^<br^>  

popd
>>"%Aus%" type HTML2.txt  
pause

Eine Frage bzgl. der HTML-ausgabe habe ich noch,

kann man die einzelnen Werte der jeweiligen Kundennummern nicht in Variablen schreiben, und deren Werte dann in den HTML code?

Ich denke mir das so: Suchlauf durch die Dateien, n-Mal Kunde 1234 gefunden, Wert "n" in Variable n1 schreiben, Variable HTML_n1 im HTML code suchen und durch n1 ersetzen. Das ganze für jeweils alle Kundennummer.

Sofern mein HTML Code dann schon eine schicke Tabelle ist und in z.B. Reihe 1 Kunde 1 steht und in meiner KundenNr.txt Kunde 1 auch der erste ist, nach dem ich in meinen Dateien suche, so sollten dann in der Wertespalte, der Reihe 1 die Werte für Kunde 1 auftauchen (Eingefügt duch das Variablen suchen / ersetzen).

Oder? face-smile
Member: bastla
bastla Nov 07, 2010 at 20:45:42 (UTC)
Goto Top
Hallo BBUser!
nur der Code aus HTML1.txt landet irgendwie nicht mehr in der Ausgabedatei.
Ist so nicht ganz richtig: bis zur Zeile 15 ist er drin face-wink - die hätte eigentlich durch die jetzige Zeile 9 ersetzt werden sollen (was sich ja aber noch immer machen lässt) ...
Deine zusätzlichen Überlegungen kann ich nicht so ganz nachvollziehen - die HTML-Tabellen-Zeilen kannst Du doch problemlos (und mit der Gewissheit, dass KundenNr. und Häufigkeit auch wirklich zusammengehören) etwa so schreiben:
... echo ^<tr^>^<td^>%%i^</td^>^<td^>%%a^</td^</tr^>
Grüße
bastla
Member: BBUser
BBUser Nov 08, 2010 at 08:32:47 (UTC)
Goto Top
Hallo Bastla,

im Prinzip ist diese Aufgabe gelöst. Manchmal kommt es jedoch vor, das das Script den String "accountref" in die KundenNr.txt schreibt. Kann man das noch abstellen?

Grüsse face-smile
Member: bastla
bastla Nov 08, 2010 at 09:37:48 (UTC)
Goto Top
Hallo BBUser!
Kann man das noch abstellen?
Ohne Veränderung der Ausgangsdatei (die Begründung für das Auftauchen des Strings findest Du oben) wäre es am einfachsten, im Nachhinein alle Zeilen, in denen "accountref" vorkommt, auszufiltern:
move "%Aus%" "%temp%\TempFile.html"  
findstr /v "accountref" "%temp%\TempFile.html">"%Aus%"  
Grüße
bastla
Member: BBUser
BBUser Nov 08, 2010 at 11:09:28 (UTC)
Goto Top
Recht hast Du. Manchmal kann das so einfach sein.

2 Fragen hätte ich dazu noch, welche die Sache etwas komfortabler gestalten.

Einige der Kunden verwenden manchmal 2 verschiedene (oder mehr) Kundennummern. Lassen sich die Werte der jeweiligen Kundennummern einfach addieren und einer 3ten Nummer bzw. Variablen zuordnen? Ich könnte z.B. die 2 Nummern des einen Kunden als erstes in die KundenNr.txt schreiben. Deren zwei Ergebnisse sollten dann zu einem addiert werden. Dafür müsste man wahrscheinlich eine komplizierte extra Routine verwenden, oder?

Und, die zweite Frage. Lässt sich das Script so erweitern, dass Die Kundennummern dann später durch die Kundennamen ersetzt werden? Ich teste das gerade mit einem call befehl und einer zusätzlichen .bat - was aber in einem Fehler endet -> replace.bat is not recognized as an internal or external comand....

Grüße
Member: bastla
bastla Nov 08, 2010 at 18:15:08 (UTC)
Goto Top
Hallo BBUser!
Dafür müsste man wahrscheinlich eine komplizierte extra Routine verwenden, oder?
Jein - zusammen mit der Frage 2 würde es sich anbieten, eine zusätzliche Kundendatei ("Kundenliste.txt") aufzubauen, welche KundenNr und Kundenname enthält - dann könnte in einem ersten Schritt eine Zwischendatei ("KundenRohdaten.txt") erstellt werden, in welcher die Häufigkeiten je Kunden noch für jede KundenNr getrennt erfasst sind. Nach Sortierung dieser Datei nach dem Kundennamen ließe sich per Gruppenverarbeitung die Summe je Kunden bilden und damit dann die HTML-Datei erstellen - Voraussetzung wäre dafür natürlich, dass die neue Kundendatei sämtliche vorkommenden KundenNr enthält.

Wieder ungetestet etwa so:
@echo off & setlocal
set "Ein=F:\XMLtest\XML-Ordner"  
set "Aus=F:\XMLtest\XML-OrdnerAuswertung.html"  
set "Index=F:\XMLtest\KundenNr.txt"  
set "Liste=F:\XMLtest\KundenListe.txt"  
set "Roh=F:\XMLtest\KundenRohdaten.txt"  
set "Such= <accountref>"  
set "Such2=</accountref>"  
set "Del=;"  

del "%Roh%" 2>nul  
pushd "%Ein%"  
if not exist "%Index%" copy nul "%Index%">nul  
for /f "delims=" %%i in ('dir /b /aa *.xml') do for /f "tokens=2 delims=<>" %%a in ('findstr /c:"%Such%" "%%i"') do findstr /x "%%a" "%Index%">nul || >>"%Index%" echo %%a  
attrib -a *.xml

for /f "usebackq delims=" %%i in ("%Index%") do (  
    for /f "tokens=1* delims=%Del%" %%j in ('findstr /b "%%i%Del%" "%Liste%"') do (  
        for /f %%a in ('findstr /m /c:"%Such%%%i%Such2%" *.xml^|find /i /c "xml"') do >>"%Roh%" echo "%%k"%Del%%%a  
    )
)
popd

move "%Roh%" "%temp%\Roh.txt"  
sort /o "%Roh%" "%temp%\Roh.txt"  

copy HTML1.txt "%Aus%">nul  
set "Kunde="  
for /f "usebackq tokens=1-2 delims=%Del%" %%k in ("%Roh%") do call :ProcessLine %%k %%l  
>>"%Aus%" echo ^<tr^>^<td^>%Kunde:.=%^</td^>^<td^>%Anz%^</td^</tr^>  
>>"%Aus%" type HTML2.txt  
pause
goto :eof

:ProcessLine
if not defined Kunde goto :Next
if "%Kunde%"==%1 (set /a Anz+=%2 & goto :eof)  
>>"%Aus%" echo ^<tr^>^<td^>%Kunde:&=^&%^</td^>^<td^>%Anz%^</td^</tr^>  
:Next
set "Kunde=%~1"  
set /a Anz=%2
goto :eof
wobei die"Kundenliste.txt" nach dem Schema
5095;Kundenbeispiel1
5099;Kundenbeispiel2 & so
....;.....
aufgebaut ist - das Trennzeichen (%Del% - siehe Zeile 9) soll natürlich so gewählt sein, dass es in keinem Kundennamen vorkommt. Die "KundenRohdaten.txt" wird erst beim nächsten Durchlauf gelöscht und steht daher nach Ende des Batches zur Verfügung, um die Einzelwerte nachvollziehen zu können.

In der Annahme, dass die Kundennamen die Sonderzeichen "<|>" nicht enthalten, wird nur für die korrekte Ausgabe eines "&" vorgesorgt (siehe Zeile 38) ...

Grüße
bastla

P.S.: Mehrere KundenNr für einen einzelnen Kunden finde ich suboptimal ...

[Edit] Gruppenverarbeitung geändert [/Edit]
[Edit2] Zeile 18 (siehe unten) korrigiert [/Edit2]
Member: BBUser
BBUser Nov 08, 2010 at 20:30:47 (UTC)
Goto Top
Respekt! face-smile

Teste gerade. 2 Sachen / Fehler.

1. File not found.

Ausgabe der CMD:

F:\XMLtest>setlocal

F:\XMLtest>set "Ein=F:\XMLtest\XML-Ordner"  

F:\XMLtest>set "Aus=F:\XMLtest\XML-OrdnerAuswertung.html"  

F:\XMLtest>set "Index=F:\XMLtest\KND.txt"  

F:\XMLtest>set "Liste=F:\XMLtest\KundenListe.txt"  

F:\XMLtest>set "Roh=F:\XMLtest\KundenRohdaten.txt"  

F:\XMLtest>set "Such= <accountref>"  

F:\XMLtest>set "Such2=</accountref>"  

F:\XMLtest>set "Del=;"  

F:\XMLtest>del "F:\XMLtest\KundenRohdaten.txt"  2>nul  

F:\XMLtest>pushd "F:\XMLtest\XML-Ordner"  

F:\XMLtest\XML-Ordner>if not exist "F:\XMLtest\KND.txt" copy nul "F:\XMLtest\KND  
.txt" 1>nul  

F:\XMLtest\XML-Ordner>for /F "delims=" %i in ('dir /b /aa *.xml') do for /F "tok  
ens=2 delims=<>" %a in ('findstr /c:" <accountref>" "%i"') do findstr /x "%a" "F  
:\XMLtest\KND.txt"  1>nul  || echo %a 1>>"F:\XMLtest\KND.txt"  
File Not Found

Gebe ich F:\XMLtest\KND.txt in die Exploreradressleiste ein wird die Datei auch geöffnet.

2te Sache:

Ab der 17. Zeile bricht das Script ab und das Fenster geht zu. Kann man das irgendwie besser debuggen?

Meine Kundenliste.txt sieht so aus:


5095;Kunde2
50951;Kunde1
50953;Kunde1


Brauchen wir die KND.txt eigentlich noch, weil wir haben ja nun die Kundenliste?

Grüsse und Danke für die Hilfe.
Member: bastla
bastla Nov 08, 2010 at 20:53:03 (UTC)
Goto Top
Hallo BBUser!
Brauchen wir die KND.txt eigentlich noch, weil wir haben ja nun die Kundenliste?
Die beiden Dateien haben unterschiedliche Aufgaben: in der "KND.txt" werden alle KundenNr aus den vorhandenen Dateien (ohne Duplikate) gesammelt (Anmerkung: wenn ".xml"-Dateien gelöscht werden, muss die "KND.txt" neu erstellt und daher ebenfalls gelöscht werden), während die "Kundenliste.txt" alle möglichen Kundennummen und die zugehörigen Namen enthält - daher: ja.

"File not found" kann auch daraus resultieren, dass es keine ".xml"-Dateien mit gesetztem "Archiv"-Attribut gibt ...
Ab der 17. Zeile bricht das Script ab und das Fenster geht zu. Kann man das irgendwie besser debuggen?
Wenn es keine (bzw genauer: nur eine leere) "KND.txt" gibt, hat die Schleife nicht viel zu tun ...

Zum Debuggen könntest Du alle Ausgaben (also auch die Fehlermeldungen) in eine Textdatei umleiten - wenn der Batch zB "Statistik.cmd" heißt, dann mit
Statistik >Log.txt 2>&1
starten - so kannst Du in aller Ruhe den Ablauf nachvollziehen (und falls Du einen vernünfitgen Editor - bei mir wäre das zB Notepad++) verwendest, lassen sich auch per "Suchen / Ersetzen" von "2 Zeilenschaltungen durch 1 Zeilenschaltung" (in "Notepad++" mit "Suchmodus: Erweitert" die Ersetzung von "\r\n\r\n" durch "\r\n") die Leerzeilen eliminieren ...

Grüße
bastla
Member: BBUser
BBUser Nov 08, 2010 at 21:07:33 (UTC)
Goto Top
Hallo Bastla,

die KND.txt sieht so aus:

50953
50951
5095

Einfach manuel die Testkundennummern eingetragen.

Die Idee mit dem Log ist super.

Da schauts wie folgt aus.

F:\XMLtest\XML-Ordner>for /F "delims=" %i in ('dir /b /aa *.xml') do for /F "tokens=2 delims=<>" %a in ('findstr /c:" <accountref>" "%i"') do findstr /x "%a" "F:\XMLtest\KND.txt"  1>nul  || echo %a 1>>"F:\XMLtest\KND.txt"   
File Not Found

F:\XMLtest\XML-Ordner>attrib -a *.xml 
f was unexpected at this time.
F:\XMLtest\XML-Ordner>    for f "tokens=1* delims=;" %j in ('findstr /b "%iDelListe') do (  

Verstehe nicht ganz welches F ihm da nicht passt.
NP++ verwende ich ebenfalls.

Grüße
Member: bastla
bastla Nov 08, 2010 at 21:14:34 (UTC)
Goto Top
Hallo BBUser!

Das "f" ist das aus Zeile 18 (in Deinem geposteten Log in Zeile 6) - es fehlt "/" davor face-sad

Eigentlich sollte die ganze Zeile eher so aussehen:
for /f "tokens=1* delims=%Del%" %%j in ('findstr /b "%%i%Del%" "%Liste%"') do (
Ich korrigiere das auch oben ...

Grüße
bastla
Member: BBUser
BBUser Nov 08, 2010 at 21:36:59 (UTC)
Goto Top
Stimmt. Das fehlte.

Nun läuft das Script schonmal weiter, hat aber mit der Rohdaten-Datei ein Problem.

Bsp.:

F:\XMLtest\XML-Ordner>(for /F "tokens=1* delims=;" %j in ('findstr /b "50953DelListe') do ( for /f %a in ('findstr /m /c:" <accountref>50953</accountref>" *.xml|find /i /c "xml"') do echo "%k";%a 1>>"F:\XMLtest\KundenRohdaten.txt" )
The system cannot find the file specified.

und später:

F:\XMLtest>copy HTML1.txt "F:\XMLtest\XML-OrdnerAuswertung.html" 1>nul

F:\XMLtest>set "Kunde="

F:\XMLtest>for /F "usebackq tokens=1-2 delims=;" %k in ("F:\XMLtest\KundenRohdaten.txt") do call :ProcessLine %k %l
The system cannot find the file F:\XMLtest\KundenRohdaten.txt.

Diese wird doch automatisch erstellt, oder?

edit// Das mit den Rohdaten klappt nun doch - die korrigierte Zeile bewirkte wunder. Damit landet schonmal was lesbares in der Auswertung, womit man dann morgen weiter testen kann.

Grüße