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
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
Please also mark the comments that contributed to the solution of the article
Kommentar vom Moderator Biber am Aug 02, 2010 um 18: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-Key: 148166
Url: https://administrator.de/contentid/148166
Printed on: April 26, 2024 at 09:04 o'clock
2 Comments
Latest comment
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