2 TXT-Dateien spaltenweise zusammenfügen
Hallo Batch-Profiss,
ich versuche momentan verzweifelt eine Batch-Datei zu erstellen und bräuchte da mal eure Unterstützung:
Ich habe zwei TXT-Dateien (PNR.txt, UNS.txt; beide haben ca. 1000 Zeilen) die ich gerne zu einem File kombiniren würde:
PNR.txt
IndexInfo1Info2Info3Info4
...
UNS.txt
IndexInfo5Info6Info7Info8
Jetzt würde ich gerne eine neue TXT-Datei erstellen lassen, die so aussieht:
Index;Info4;Info2,Info5;Info8
Spaltenköpfe haben beide Files keine. -
Ich würde also gerne die Daten aus dem File 1 dem File 2 über die Indexstelle zuordnen lassen.
Den ersten Teil (Index;Index4;Index2) habe ich noch Problemlos über eine FOR-Schleife hinbekommen. - Da die Werte nicht abgetrennt sind, habe ich mir mit der immer identischen Zeichenzahl beholfen:
for /f "usebackq delims=" %%i in ("%Alt%") do (
set "Z=%%i"
Allerdings bleibbe ich nun bei der Zuordnung der Daten aus dem File 2 (UNS.txt) hängen. - Wie schaffe ich es nun, dass auch Info5;Info8 aus File 2 richtig angehängt wird?
Vermutlich läuft das auf die Integration von einer weiteren For-Schleife und findstr raus? - Allerdings bin ich da jetzt bei der Verschachtelung hängengeblieben.
Für einen Tipp wäre ich sehr dankbar.
smileyman
ich versuche momentan verzweifelt eine Batch-Datei zu erstellen und bräuchte da mal eure Unterstützung:
Ich habe zwei TXT-Dateien (PNR.txt, UNS.txt; beide haben ca. 1000 Zeilen) die ich gerne zu einem File kombiniren würde:
PNR.txt
IndexInfo1Info2Info3Info4
...
UNS.txt
IndexInfo5Info6Info7Info8
Jetzt würde ich gerne eine neue TXT-Datei erstellen lassen, die so aussieht:
Index;Info4;Info2,Info5;Info8
Spaltenköpfe haben beide Files keine. -
Ich würde also gerne die Daten aus dem File 1 dem File 2 über die Indexstelle zuordnen lassen.
Den ersten Teil (Index;Index4;Index2) habe ich noch Problemlos über eine FOR-Schleife hinbekommen. - Da die Werte nicht abgetrennt sind, habe ich mir mit der immer identischen Zeichenzahl beholfen:
for /f "usebackq delims=" %%i in ("%Alt%") do (
set "Z=%%i"
"%Neu%" echo !Z:~25,8!;!Z:~0,8!)
Allerdings bleibbe ich nun bei der Zuordnung der Daten aus dem File 2 (UNS.txt) hängen. - Wie schaffe ich es nun, dass auch Info5;Info8 aus File 2 richtig angehängt wird?
Vermutlich läuft das auf die Integration von einer weiteren For-Schleife und findstr raus? - Allerdings bin ich da jetzt bei der Verschachtelung hängengeblieben.
Für einen Tipp wäre ich sehr dankbar.
smileyman
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129335
Url: https://administrator.de/contentid/129335
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo smileyman und willkommen im Forum!
Dein Ansatz (wäre - neben der Verwendung von VBS - auch meiner gewesen ) sollte sich etwa so umsetzen lassen (die Positionen in !Z2! sind frei erfunden ):
Ob die "
Grüße
bastla
Dein Ansatz (wäre - neben der Verwendung von VBS - auch meiner gewesen ) sollte sich etwa so umsetzen lassen (die Positionen in !Z2! sind frei erfunden ):
for /f "usebackq delims=" %%i in ("%Alt%") do (
set "Z=%%i"
for /f "delims=" %%a in ('findstr /b /i /c:"!Z:~0,8!" "%Alt2%"') do set "Z2=%%a"
>>"%Neu%" echo !Z:~25,8!;!Z:~0,8!;!Z2:~8,10!;!Z2:~30,6!
)
findstr
"-Schalter "/i
" und "/c
" tatsächlich benötigt werden, hängt von Deinen Daten ab (aber, wenn auch vermutlich nicht erforderlich, schaden sollten sie zumindest nicht) ...Grüße
bastla
Hallo smileyman!
Bei Bedarf kannst Du auch, je nachdem, ob !Z2! einen Inhalt hat, unterschiedliche Ausgaben vornehmen
Grüße
bastla
Jetzt habe ich nur noch ein Problem: Wenn der Wert von File 1 nicht in File 2 vorhanden ist, wird immer die letzte Zeile verwendet. - Evtl. kann ich das auch noch unterdrücken?
Füge vor Zeile 3 ein:set "Z2="
(if defined Z2 (echo ...) else (echo ...))>>"%Neu%"
Diese Batch würde so ca. 3.000 mal pro Tag laufen, siehst du da Performanceprobleme oder die Gefahr einer Instabilität?
Ohne mehr über den Batch zu wissen, kann ich ohnehin nichts dazu sagen - allerdings solltest Du das ja (ua auf dem Rechner, auf welchem der Batch tatsächlich ausgeführt werden soll) selbst testen können ...Grüße
bastla