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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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.
Das bekommen wir ohne Zusatzutilities hin.
Content-ID: 148166
Url: https://administrator.de/forum/zeilen-in-txt-datei-mit-batch-zusammenfassen-und-ergaenzen-148166.html
Ausgedruckt am: 01.05.2025 um 00:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo radiofm1 und willkommen im Forum!
Das könnte so gehen:
Das Einlesen der Zeile 1 und speichern als %Z1% lässt sich einfach über "
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
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%
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