radiofm1
Goto Top

Zeilen in txt-Datei mit Batch zusammenfassen und ergänzen

Guten Abend zusammen

Ich suche eine Batch-Lösung, wie ich aus einer Datei1.txt mit mehreren Zeilen die beiden obersten Zeilen (Zeile 1 und Zeile 2) in eine Datei2.txt auf einer Zeile darstellen kann.
Erschwerend kommt hinzu, dass ich zuerst den Inhalt der Zeile 2 und erst dann Zeile 1 und zusätzlich ein Trennzeichen (zB ein Bindestrich - ) haben möchte.
Haben nun länger mit "FOR /f "delims="" experimentiert und komme auf keinen grünen Zweig (bin eher ein Batch-Anfänger ... leider)

Zur Verdeutlichung.

Inhalt Datei1.txt:
Zeile 1 ...
Zeile 2
Zeile 3
Zeile 4
...

und ich hätte nach der Batch-Bearbeitung gerne eine

Datei2.txt:
Zeile 2 - Zeile 1

Gruss und herzlichen Dank für die Hilfe
radiofm1
Kommentar vom Moderator Biber am 02.08.2010 um 20:00:07 Uhr
Ich verschieb es mal ganz optimistisch von "Tools & Utilities" nach "Batches From Hell".
Das bekommen wir ohne Zusatzutilities hin.

Content-Key: 148166

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

Ausgedruckt am: 28.03.2024 um 18:03 Uhr

Mitglied: bastla
bastla 02.08.2010, aktualisiert am 18.10.2012 um 18:43:01 Uhr
Goto Top
Hallo radiofm1 und willkommen im Forum!

Das könnte so gehen:
@echo off & setlocal
set "Ein=D:\Datei1.txt"  
set "Aus=D:\Datei2.txt"  

set /p Z1=<"%Ein%"  
set "Z2="  
for /f "usebackq skip=1 delims=" %%i in ("%Ein%") do if not defined Z2 set "Z2=%%i"  
set "Zeile=%Z2% - %Z1%"  

set "Zeile=%Zeile:^=^^%"  
set "Zeile=%Zeile:&=^&%"  
set "Zeile=%Zeile:<=^<%"  
set "Zeile=%Zeile:>=^>%"  
set "Zeile=%Zeile:|=^|%"  

>"%Aus%" echo %Zeile%  
Das Einlesen der Zeile 1 und speichern als %Z1% lässt sich einfach über "set /p" realisieren.

Für die Zeile 2 muss die gesamte Datei1.txt gelesen werden, wobei zunächst die Zeile 1 übersprungen wird und dann nur, wenn es noch keine Variable %Z2% gibt (also nur beim ersten Schleifendurchlauf), die gelesene Zeile der Variablen %Z2% zugewiesen wird - alle weiteren Zeilen werden dann zwar gelesen, aber ignoriert.

Schließlich werden %Z2% und %Z1% in der vorgesehenen Form in der Variablen %Zeile% zusammengefasst. Bevor diese Zeile in die Ausgabedatei geschrieben werden kann, werden zur Sicherheit störende Sonderzeichen (speziell für den Pessimisten -oder vermutlich doch nur Realisten - hier) "maskiert".

Die Ausgabedatei wird dann wegen des ">" automatisch neu erstellt (= auch eine bereits vorhandene gleichnamige Datei überschrieben).

Grüße
bastla
Mitglied: radiofm1
radiofm1 03.08.2010 um 11:22:16 Uhr
Goto Top
Hallo bastla

funktioniert bestens!
Und auch noch einleuchtend erklärt - ich bin begeistert.
(Meine "Übungen" waren massiv komplizierter ... spannend, wie man mein Problem mit ein paar wenigen Zeilen Batch lösen konnte)

Herzlichen Dank,
radiofm1