Textdateien zusammenfassen aber mit Bedingungen. (die ersten 5 Zeilen auslassen)
Hallo zusammen,
hoffe Ihr könnt mir helfen. Habe ähnliche Fragen schon oft gelesen und schon unzählige Texte und Beispiele mir angeschaut. bekomme es aber nicht hin.
Meine Problem ist, dass ich in einer Datei viele txt-Dateien habe die ich zusammenfassen möchte. jede txt-Datei hat aber die gleiche Kopfzeile. Nun soll die Kopfzeile aber nur einmal kopiert werden und nicht aus jeder txt-Datei. Dazu bräuchte ich eine batch mit der ich die Dateien nicht nur zusammenfassen kann sondern auch angeben kann ab welcher Zeile die Txt-Datei ab der 2. txt-Datei kopiert werden soll. Kann mir da jemand helfen. bin auch für andere Lösungen offen.
DANKE FÜR EURE HILFE
Joindy
hoffe Ihr könnt mir helfen. Habe ähnliche Fragen schon oft gelesen und schon unzählige Texte und Beispiele mir angeschaut. bekomme es aber nicht hin.
Meine Problem ist, dass ich in einer Datei viele txt-Dateien habe die ich zusammenfassen möchte. jede txt-Datei hat aber die gleiche Kopfzeile. Nun soll die Kopfzeile aber nur einmal kopiert werden und nicht aus jeder txt-Datei. Dazu bräuchte ich eine batch mit der ich die Dateien nicht nur zusammenfassen kann sondern auch angeben kann ab welcher Zeile die Txt-Datei ab der 2. txt-Datei kopiert werden soll. Kann mir da jemand helfen. bin auch für andere Lösungen offen.
DANKE FÜR EURE HILFE
Joindy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133508
Url: https://administrator.de/contentid/133508
Ausgedruckt am: 24.11.2024 um 19:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo Joindy und willkommen im Forum!
Etwa so (wobei sich die Reihenfolge aus dem Dateidatum ergibt):
[Edit] Noch etwas vereinfacht ... [/Edit]
]Edit2] ... und gegen "Datei nicht gefunden" abgesichert. [/Edit2]
Grüße
bastla
Etwa so (wobei sich die Reihenfolge aus dem Dateidatum ergibt):
@echo off & setlocal
set "Dateien=D:\Datei*.txt"
set "Sammel=D:\Sammel.txt"
set /a Skip=5
set "Erste="
for /f "delims=" %%i in ('dir /b /o-d "%Dateien%" 2^>nul') do set "Erste=%%i"
if not defined Erste echo Keine passenden Dateien gefunden! & goto :eof
copy "%Erste%" "%Sammel%"
for /f "skip=1 delims=" %%i in ('dir /b /od "%Dateien%"') do >>"%Sammel%" more +%Skip% "%%i"
]Edit2] ... und gegen "Datei nicht gefunden" abgesichert. [/Edit2]
Grüße
bastla
Hallo Joindy!
Kurze Erklärung (zur aktuellen Version):
Die ersten Zeilen sollten eigentlich ziemlich klar sein ...
Durch die Zeile 6 wird sicher gestellt, dass kein "alter" Wert in der Variablen "%Erste%" steht.
In Zeile 7 wird die erste Datei gesucht, indem in einer Schleife alle Dateien in umgekehrter Reihenfolge aufgelistet und jeweils in der Variablen %Erste% gespeichert werden (was natürlich den vorherigen Inhalt überschreibt) - die erste Datei wird zuletzt gespeichert und bleibt daher in der Variablen. Das (nachträglich ergänzte) "
... die Abfrage in Zeile 8 anhand einer leeren Variablen "%Erste%" für den Fall, dass keine Datei gefunden wurde, den Batch abbrechen kann.
Wenn es zumindest eine Datei gibt, wird die erste (=älteste) in die Zieldatei "%Sammel%" kopiert (Zeile 9) und ...
... in Zeile 10 in einer Schleife über die Auflistung aller Dateien (dieses Mal in der richtigen Reihenfolge, sodass die erste, bereits verarbeitete Datei übersprungen werden kann - siehe "
Grüße
bastla
Kurze Erklärung (zur aktuellen Version):
Die ersten Zeilen sollten eigentlich ziemlich klar sein ...
Durch die Zeile 6 wird sicher gestellt, dass kein "alter" Wert in der Variablen "%Erste%" steht.
In Zeile 7 wird die erste Datei gesucht, indem in einer Schleife alle Dateien in umgekehrter Reihenfolge aufgelistet und jeweils in der Variablen %Erste% gespeichert werden (was natürlich den vorherigen Inhalt überschreibt) - die erste Datei wird zuletzt gespeichert und bleibt daher in der Variablen. Das (nachträglich ergänzte) "
2>nul
" stellt sicher, dass eine etwaige Fehlermeldung "Datei nicht gefunden
" unterdrückt und daher nicht in die Variable geschrieben wird, sodass ...... die Abfrage in Zeile 8 anhand einer leeren Variablen "%Erste%" für den Fall, dass keine Datei gefunden wurde, den Batch abbrechen kann.
Wenn es zumindest eine Datei gibt, wird die erste (=älteste) in die Zieldatei "%Sammel%" kopiert (Zeile 9) und ...
... in Zeile 10 in einer Schleife über die Auflistung aller Dateien (dieses Mal in der richtigen Reihenfolge, sodass die erste, bereits verarbeitete Datei übersprungen werden kann - siehe "
skip=1
") der Inhalt jeder Datei, beginnend nach der in %Skip% (vielleicht wäre der Variablenname %NachZeile% besser gewesen) angegebenen Zeilenanzahl, mit "more
" ausgegeben und per Umleitung mit ">>
" an die Sammeldatei angefügt werden kann.Grüße
bastla
Hallo,
ich habe mir mal erlaubt das kleine Script zu nutzen, da ich genau vor dem gleichen Problem stand.
Was jetzt bei mir aber passiert ist, dass die zweite und weitere Dateien die zusammengefasst werden alle ihre Formatierung verlieren.
Es handelt sich dabei um tab-getrennte txt-Dateien.
Die erste bleibt noch tab-getrennt, alle weiteren in der Sammeldatei haben dann keine Trennung mehr.
Gibt es da eine Lösung?
Danke
ich habe mir mal erlaubt das kleine Script zu nutzen, da ich genau vor dem gleichen Problem stand.
Was jetzt bei mir aber passiert ist, dass die zweite und weitere Dateien die zusammengefasst werden alle ihre Formatierung verlieren.
Es handelt sich dabei um tab-getrennte txt-Dateien.
Die erste bleibt noch tab-getrennt, alle weiteren in der Sammeldatei haben dann keine Trennung mehr.
Gibt es da eine Lösung?
Danke
Hallo AS-N00!
Geschwindigkeitsrekorde lassen sich so wohl eher nicht aufstellen, aber funktionieren sollte es:
Grüße
bastla
Geschwindigkeitsrekorde lassen sich so wohl eher nicht aufstellen, aber funktionieren sollte es:
@echo off & setlocal
set "Ordner=D:\"
set "Dateien=Datei*.txt"
set "Sammel=Sammel.txt"
set /a Skip=5
pushd "%Ordner%"
set "Erste="
for /f "delims=" %%i in ('dir /b /o-d /a-d "%Dateien%" 2^>nul') do set "Erste=%%i"
if not defined Erste (echo Keine passenden Dateien gefunden! & popd & goto :eof)
copy "%Erste%" "%Sammel%">nul
for /f "skip=1 delims=" %%i in ('dir /b /od /a-d "%Dateien%"') do (
for /f "skip=%Skip% delims=" %%a in ('findstr /n "^" "%%i"') do (
set "Zeile=%%a"
setlocal enabledelayedexpansion
echo(!Zeile:*:=!
endlocal
)
)>>"%Sammel%"
popd
bastla
Ich mache hier ein sehr altes Thema wieder auf, aber es trifft genau auf mein Problem zu. Ich konnte hierdurch eine Reihe von CSV Dateien zusammenfügen.
Ich hätte als Anfrage allerdings noch eine kleine Ergänzung: Bei der ersten Datei möchte ich zusätzlich die erste Zeile nicht in die zusammengefügte Datei übernehmen.
Ist dafür nicht nur eine kleine Ergänzung in dieser Zeile notwendig? Wäre über ein wenig Hilfe sehr dankbar, da ich hiermit leider keinerlei Erfahrung habe, die Lösung mir allerdings ungemein bei der schnellen Datenaufbereitung helfen würde.
Gruß
One
Ich hätte als Anfrage allerdings noch eine kleine Ergänzung: Bei der ersten Datei möchte ich zusätzlich die erste Zeile nicht in die zusammengefügte Datei übernehmen.
copy "%Erste%" "%Sammel%"
Ist dafür nicht nur eine kleine Ergänzung in dieser Zeile notwendig? Wäre über ein wenig Hilfe sehr dankbar, da ich hiermit leider keinerlei Erfahrung habe, die Lösung mir allerdings ungemein bei der schnellen Datenaufbereitung helfen würde.
Gruß
One
Hallo sirOne und willkommen im Forum!
Wenn ich das richtig interpretiere, möchtest du einfach nur alle Dateien ohne die jeweils erste Zeile zusammenfassen - das ginge relativ einfach (aber ungetestet) etwa so:
"%Erste%" in der von dir zitierten Zeile im ursprünglichen Batch meinte übrigens die erste (= älteste) Datei, welche ohne das Weglassen von Zeilen kopiert und so zum Inhalt der neuen Sammeldatei (das Kopieren überschreibt eine ev bereits vorhandene Datei) gemacht wurde.
Grüße
bastla
Wenn ich das richtig interpretiere, möchtest du einfach nur alle Dateien ohne die jeweils erste Zeile zusammenfassen - das ginge relativ einfach (aber ungetestet) etwa so:
@echo off & setlocal
set "QuellOrdner=D:\Dein Ordner"
set "Dateien=Datei*.txt"
set "Sammel=D:\Sammel.txt"
del "%Sammel%" 2>nul
pushd "%QuellOrdner%"
for /f "delims=" %%i in ('dir /b /od "%Dateien%"') do >>"%Sammel%" more +1 "%%~i"
popd
Grüße
bastla
Danke für die schnelle Antwort und das freundliche Hallo bastla!
Leider verhält es sich etwas anders. Ich erkläre doch mal ausführlich: Ich habe einen Ordner mit einer unbestimmten Anzahl an CSV Dateien, diese sind alle folgendermaßen aufgebaut:
Diese CSV Dateien möchte ich zusammenfügen zu einer einzigen Datei, dabei benötige ich also einmalig die Zeile mit den Überschriften und ansonsten alle Datenzeilen aus allen Dateien. Die Zeile mit dem Protokoll benötige ich gar nicht.
In einem weiteren Schritt wollte ich jeder Zeile noch eine Information hinzufügen, nämlich ";Information" und dementsprechend in der Zeile mit den Überschriften ";Infoüberschrift"
Dafür habe ich mir aus deinem Code oben und aus einer anderen Quelle das folgende Script zusammen geschrieben:
Das scheint auch soweit gut zu funktionieren, allerdings werde ich die Zeile mit dem Protokoll nicht los, so dass "Infoüberschrift" noch in dieser landet.
Wenn du mir da also den letzten Stups geben könntest wäre das super!
Liebe Grüße
One
Leider verhält es sich etwas anders. Ich erkläre doch mal ausführlich: Ich habe einen Ordner mit einer unbestimmten Anzahl an CSV Dateien, diese sind alle folgendermaßen aufgebaut:
Protokollunsinn des Programms aus welchem sie stammen
Überschriften1;Überschriften2;Überschriften3;Überschriften4;usw.
Data1;Data2;Data3;Data4;usw.
usw.
Diese CSV Dateien möchte ich zusammenfügen zu einer einzigen Datei, dabei benötige ich also einmalig die Zeile mit den Überschriften und ansonsten alle Datenzeilen aus allen Dateien. Die Zeile mit dem Protokoll benötige ich gar nicht.
In einem weiteren Schritt wollte ich jeder Zeile noch eine Information hinzufügen, nämlich ";Information" und dementsprechend in der Zeile mit den Überschriften ";Infoüberschrift"
Dafür habe ich mir aus deinem Code oben und aus einer anderen Quelle das folgende Script zusammen geschrieben:
@echo off & setlocal
set "Dateien=D:\Data\Quelle*.csv"
set "Sammel=batch.csv"
set /a Skip=2
set "Erste="
for /f "delims=" %%i in ('dir /b /o-d "%Dateien%" 2^>nul') do set "Erste=%%i"
if not defined Erste echo Keine passenden Dateien gefunden! & goto :eof
copy "%Erste%" "%Sammel%"
for /f "skip=1 delims=" %%i in ('dir /b /od "%Dateien%"') do >>"%Sammel%" more +%Skip% "%%i"
Set /p ersteZeile=<batch.csv
echo %ersteZeile%;Infoüberschrift>Gesamt.csv
for /f "skip=1 delims=" %%i in (batch.csv) do @echo %%i;Information>>Gesamt.csv
Das scheint auch soweit gut zu funktionieren, allerdings werde ich die Zeile mit dem Protokoll nicht los, so dass "Infoüberschrift" noch in dieser landet.
Wenn du mir da also den letzten Stups geben könntest wäre das super!
Liebe Grüße
One
Hallo sirOne!
Naja, wie schon kurz beschrieben kopiert die Zeile 9 die gesamte "erste" Datei - daher müsstest Du diese Zeile ersetzen durch
um die erste Zeile der ersten Datei zu überspringen ...
Grüße
bastla
P.S.: Konsequenter Weise solltest Du auch in den Zeilen 12 und 14 die Variable %Sammel% verwenden (macht den Batch leichter wartbar, da Du für eine Änderung des Dateinamens diesen nur einmalig in Zeile 3 eintragen müsstest). Auch für die "Gesamt.csv" würde ich aus dem gleichen Grund zur Verwendung einer Variablen raten ...
Naja, wie schon kurz beschrieben kopiert die Zeile 9 die gesamte "erste" Datei - daher müsstest Du diese Zeile ersetzen durch
>"%Sammel%" more +1 "%Erste%"
Grüße
bastla
P.S.: Konsequenter Weise solltest Du auch in den Zeilen 12 und 14 die Variable %Sammel% verwenden (macht den Batch leichter wartbar, da Du für eine Änderung des Dateinamens diesen nur einmalig in Zeile 3 eintragen müsstest). Auch für die "Gesamt.csv" würde ich aus dem gleichen Grund zur Verwendung einer Variablen raten ...
Hallo bastla!
Ich ärgere mich ein wenig, da ich genau diese Zeile schon im Script hatte, allerdings "more+1" geschrieben habe und nichte "more +1". Leider habe ich es nicht mit Leerzeichen ausprobiert und somit noch einen Fehler erhalten. Die Syntax ist mir einfach nicht geläufig.
Jetzt funktioniert es jedenfalls so wie gedacht und ich werde mir in Summe einiges an Arbeit sparen, also riesen Dank für deine schnelle und kompetente Hilfe!
Lieben Gruß
One
Ich ärgere mich ein wenig, da ich genau diese Zeile schon im Script hatte, allerdings "more+1" geschrieben habe und nichte "more +1". Leider habe ich es nicht mit Leerzeichen ausprobiert und somit noch einen Fehler erhalten. Die Syntax ist mir einfach nicht geläufig.
Jetzt funktioniert es jedenfalls so wie gedacht und ich werde mir in Summe einiges an Arbeit sparen, also riesen Dank für deine schnelle und kompetente Hilfe!
Lieben Gruß
One
Hallo Zusammen
Sorry, dass ich einen alten Thread wieder aufmache. Ich stehe vor demselben Problem und wäre unendlich froh, wenn mir jemand von euch helfen könnte. Leider muss ich zugeben, dass ich absolut keine Ahnung von Programmierung etc habe. Deshalb war ich so frech und habe mir den Code aus diesem Thread kopiert:
@echo off & setlocal
set "Ordner=I:\PATU-S\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\"
set "Dateien=I:\PATU-S\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\KONDA*.txt"
set "Sammel=I:\PATU-S\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\KONDA_PATU_H.txt"
set /a Skip=5
pushd "%Ordner%"
set "Erste="
for /f "delims=" %%i in ('dir /b /o-d /a-d "%Dateien%" 2^>nul') do set "Erste=%%i"
if not defined Erste (echo Keine passenden Dateien gefunden! & popd & goto :eof)
copy "%Erste%" "%Sammel%">nul
for /f "skip=1 delims=" %%i in ('dir /b /od /a-d "%Dateien%"') do (
for /f "skip=%Skip% delims=" %%a in ('findstr /n "^" "%%i"') do (
set "Zeile=%%a"
setlocal enabledelayedexpansion
echo(!Zeile:*:=!
endlocal
)
)>>"%Sammel%"
popd
Leider funktioniert dies nicht wirklich. Als kleines Beispiel habe ich zwei txt Dateien erstellt mit folgenden Werten drin:
txt Datei 1:
KOTABNR KSCHL VKORG VTWEG SPART ZZPARY3 ZZKDMAT DATAB DATBI KBETR KONWA KPEIN KMEIN LOEVM_KO
Zeile1 X X X X Z Z Z Z Z Z Z Z Z
Zeile2 Z Z Z Z Z Z Z Z Z Z Z Z Z
txt Datei 2:
KOTABNR KSCHL VKORG VTWEG SPART ZZPARY3 ZZKDMAT DATAB DATBI KBETR KONWA KPEIN KMEIN LOEVM_KO
Zeile 3 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 4 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 5 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 6 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 7 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 8 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 9 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 10 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 11 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 12 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 13 Y Y Y Y Y Y Y Y Y Y Y Y Y
Führe ich nun die Batch datei aus kommt folgendes heraus:
KOTABNR KSCHL VKORG VTWEG SPART ZZPARY3 ZZKDMAT DATAB DATBI KBETR KONWA KPEIN KMEIN LOEVM_KO
Zeile1 X X X X Z Z Z Z Z Z Z Z Z
Zeile2 Z Z Z Z Z Z Z Z Z Z Z Z ZZeile 7 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 8 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 9 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 10 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 11 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 12 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 13 Y Y Y Y Y Y Y Y Y Y Y Y Y
- natürlich hat es "tabs" zwischen den Buchstaben und Text...
Vielen Dank im voraus
Liebe Grüsse
Livio
Sorry, dass ich einen alten Thread wieder aufmache. Ich stehe vor demselben Problem und wäre unendlich froh, wenn mir jemand von euch helfen könnte. Leider muss ich zugeben, dass ich absolut keine Ahnung von Programmierung etc habe. Deshalb war ich so frech und habe mir den Code aus diesem Thread kopiert:
@echo off & setlocal
set "Ordner=I:\PATU-S\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\"
set "Dateien=I:\PATU-S\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\KONDA*.txt"
set "Sammel=I:\PATU-S\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\KONDA_PATU_H.txt"
set /a Skip=5
pushd "%Ordner%"
set "Erste="
for /f "delims=" %%i in ('dir /b /o-d /a-d "%Dateien%" 2^>nul') do set "Erste=%%i"
if not defined Erste (echo Keine passenden Dateien gefunden! & popd & goto :eof)
copy "%Erste%" "%Sammel%">nul
for /f "skip=1 delims=" %%i in ('dir /b /od /a-d "%Dateien%"') do (
for /f "skip=%Skip% delims=" %%a in ('findstr /n "^" "%%i"') do (
set "Zeile=%%a"
setlocal enabledelayedexpansion
echo(!Zeile:*:=!
endlocal
)
)>>"%Sammel%"
popd
Leider funktioniert dies nicht wirklich. Als kleines Beispiel habe ich zwei txt Dateien erstellt mit folgenden Werten drin:
txt Datei 1:
KOTABNR KSCHL VKORG VTWEG SPART ZZPARY3 ZZKDMAT DATAB DATBI KBETR KONWA KPEIN KMEIN LOEVM_KO
Zeile1 X X X X Z Z Z Z Z Z Z Z Z
Zeile2 Z Z Z Z Z Z Z Z Z Z Z Z Z
txt Datei 2:
KOTABNR KSCHL VKORG VTWEG SPART ZZPARY3 ZZKDMAT DATAB DATBI KBETR KONWA KPEIN KMEIN LOEVM_KO
Zeile 3 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 4 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 5 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 6 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 7 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 8 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 9 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 10 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 11 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 12 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 13 Y Y Y Y Y Y Y Y Y Y Y Y Y
Führe ich nun die Batch datei aus kommt folgendes heraus:
KOTABNR KSCHL VKORG VTWEG SPART ZZPARY3 ZZKDMAT DATAB DATBI KBETR KONWA KPEIN KMEIN LOEVM_KO
Zeile1 X X X X Z Z Z Z Z Z Z Z Z
Zeile2 Z Z Z Z Z Z Z Z Z Z Z Z ZZeile 7 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 8 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 9 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 10 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 11 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 12 Y Y Y Y Y Y Y Y Y Y Y Y Y
Zeile 13 Y Y Y Y Y Y Y Y Y Y Y Y Y
- natürlich hat es "tabs" zwischen den Buchstaben und Text...
Vielen Dank im voraus
Liebe Grüsse
Livio
Hallo Lothar180 und willkommen im Forum!
Soferne es um die fehlende Zeilenschaltung vor "Zeile 7 Y Y ..." gehen sollte, könntest Du es nach der Zeile
mit folgender zusätzlichen Zeile versuchen:
Ansonsten wäre eine etwas konkretere Fehlerbeschreibung sinnvoll ...
Grüße
bastla
Soferne es um die fehlende Zeilenschaltung vor "Zeile 7 Y Y ..." gehen sollte, könntest Du es nach der Zeile
copy "%Erste%" "%Sammel%">nul
>>"%Sammel%" echo.
Ansonsten wäre eine etwas konkretere Fehlerbeschreibung sinnvoll ...
Grüße
bastla
Hallo bastla
Vielen Dank für die rasche Antwort.
Das Problem liegt darin, dass die Zeile 7 unterhalb von Zeile 2 platziert werden muss. Ein weiteres Problem liegt darin, dass die ersten fünf Zeilen nicht unten angehängt werden.
Deshalb habe ich folgendes Probiert:
set /a Skip=5 habe ich zu set /a Skip=1 geändert. Und zusätzlich dein Vorschlag mit der >>"%Sammel%" echo. reinkopiert.
Nun stehe ich vor einem weiteren Problem. Ich habe die Dateien als Beispiel etwas einfacher dargestellt.
Datei 1: KONDA_1.txt
Diese Überschrift bleibt bei allen txt Files dieselbe
Zeile 1 Zeile 1 Zeile 1 Zeile 1
Zeile 2 Zeile 2 Zeile 2 Zeile 2
Zeile 3 Zeile 3 Zeile 3 Zeile 3
Zeile 4 Zeile 4 Zeile 4 Zeile 4
Datei 2: KONDA_2.txt
Diese Überschrift bleibt bei allen txt Files dieselbe
Zeile 1.1 Zeile 1.1 Zeile 1.1 Zeile 1.1
Zeile 2.1 Zeile 2.1 Zeile 2.1 Zeile 2.1
Zeile 3.1 Zeile 3.1 Zeile 3.1 Zeile 3.1
Zeile 4.1 Zeile 4.1 Zeile 4.1 Zeile 4.1
Nun führe ich folgende batch-Datei aus
Das Ergebnis ist nun folgendes. Es generiert mir ein neues File mit (was auch gut ist) mit folgendem Inhalt:
Diese Überschrift bleibt bei allen txt Files dieselbe
Zeile 1.1 Zeile 1.1 Zeile 1.1 Zeile 1.1
Zeile 2.1 Zeile 2.1 Zeile 2.1 Zeile 2.1
Zeile 3.1 Zeile 3.1 Zeile 3.1 Zeile 3.1
Zeile 4.1 Zeile 4.1 Zeile 4.1 Zeile 4.1
Zeile 1 Zeile 1 Zeile 1 Zeile 1
Zeile 2 Zeile 2 Zeile 2 Zeile 2
Zeile 3 Zeile 3 Zeile 3 Zeile 3
Zeile 4 Zeile 4 Zeile 4 Zeile 4
Zeile 1.1 Zeile 1.1 Zeile 1.1 Zeile 1.1
Zeile 2.1 Zeile 2.1 Zeile 2.1 Zeile 2.1
Zeile 3.1 Zeile 3.1 Zeile 3.1 Zeile 3.1
Zeile 4.1 Zeile 4.1 Zeile 4.1 Zeile 4.1
Zeile 1 Zeile 1 Zeile 1 Zeile 1
Zeile 2 Zeile 2 Zeile 2 Zeile 2
Zeile 3 Zeile 3 Zeile 3 Zeile 3
Zeile 4 Zeile 4 Zeile 4 Zeile 4
Die Überschrift bleibt nur eimal, was auch gewünscht ist. Nun kopiert es mir einfach alles doppelt. Kannst du mir da helfen? Ich hoffe die Fehlerbeschreibung reicht. Und Sorry für meine aufwendige Beschreibung und Verhalten - bin aber aktuell bemüht mich in die Thematik einzulesen.
Liebe Grüsse
Livio
Vielen Dank für die rasche Antwort.
Das Problem liegt darin, dass die Zeile 7 unterhalb von Zeile 2 platziert werden muss. Ein weiteres Problem liegt darin, dass die ersten fünf Zeilen nicht unten angehängt werden.
Deshalb habe ich folgendes Probiert:
set /a Skip=5 habe ich zu set /a Skip=1 geändert. Und zusätzlich dein Vorschlag mit der >>"%Sammel%" echo. reinkopiert.
Nun stehe ich vor einem weiteren Problem. Ich habe die Dateien als Beispiel etwas einfacher dargestellt.
Datei 1: KONDA_1.txt
Diese Überschrift bleibt bei allen txt Files dieselbe
Zeile 1 Zeile 1 Zeile 1 Zeile 1
Zeile 2 Zeile 2 Zeile 2 Zeile 2
Zeile 3 Zeile 3 Zeile 3 Zeile 3
Zeile 4 Zeile 4 Zeile 4 Zeile 4
Datei 2: KONDA_2.txt
Diese Überschrift bleibt bei allen txt Files dieselbe
Zeile 1.1 Zeile 1.1 Zeile 1.1 Zeile 1.1
Zeile 2.1 Zeile 2.1 Zeile 2.1 Zeile 2.1
Zeile 3.1 Zeile 3.1 Zeile 3.1 Zeile 3.1
Zeile 4.1 Zeile 4.1 Zeile 4.1 Zeile 4.1
Nun führe ich folgende batch-Datei aus
@echo off & setlocal
set "Ordner=I:\PATU-H\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\"
set "Dateien=I:\PATU-H\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\KONDA*.txt"
set "Sammel=I:\PATU-H\03_H1_Mgmt\Commercial\Pricing\PreisdatenSAP\KONDA_PATU_H.txt"
set /a Skip=1
pushd "%Ordner%"
set "Erste="
for /f "delims=" %%i in ('dir /b /o-d /a-d "%Dateien%" 2^>nul') do set "Erste=%%i"
if not defined Erste (echo Keine passenden Dateien gefunden! & popd & goto :eof)
copy "%Erste%" "%Sammel%">nul
>>"%Sammel%" echo.
for /f "skip=1 delims=" %%i in ('dir /b /od /a-d "%Dateien%"') do (
for /f "skip=%Skip% delims=" %%a in ('findstr /n "^" "%%i"') do (
set "Zeile=%%a"
setlocal enabledelayedexpansion
echo(!Zeile:*:=!
endlocal
)
)>>"%Sammel%"
popd
Das Ergebnis ist nun folgendes. Es generiert mir ein neues File mit (was auch gut ist) mit folgendem Inhalt:
Diese Überschrift bleibt bei allen txt Files dieselbe
Zeile 1.1 Zeile 1.1 Zeile 1.1 Zeile 1.1
Zeile 2.1 Zeile 2.1 Zeile 2.1 Zeile 2.1
Zeile 3.1 Zeile 3.1 Zeile 3.1 Zeile 3.1
Zeile 4.1 Zeile 4.1 Zeile 4.1 Zeile 4.1
Zeile 1 Zeile 1 Zeile 1 Zeile 1
Zeile 2 Zeile 2 Zeile 2 Zeile 2
Zeile 3 Zeile 3 Zeile 3 Zeile 3
Zeile 4 Zeile 4 Zeile 4 Zeile 4
Zeile 1.1 Zeile 1.1 Zeile 1.1 Zeile 1.1
Zeile 2.1 Zeile 2.1 Zeile 2.1 Zeile 2.1
Zeile 3.1 Zeile 3.1 Zeile 3.1 Zeile 3.1
Zeile 4.1 Zeile 4.1 Zeile 4.1 Zeile 4.1
Zeile 1 Zeile 1 Zeile 1 Zeile 1
Zeile 2 Zeile 2 Zeile 2 Zeile 2
Zeile 3 Zeile 3 Zeile 3 Zeile 3
Zeile 4 Zeile 4 Zeile 4 Zeile 4
Die Überschrift bleibt nur eimal, was auch gewünscht ist. Nun kopiert es mir einfach alles doppelt. Kannst du mir da helfen? Ich hoffe die Fehlerbeschreibung reicht. Und Sorry für meine aufwendige Beschreibung und Verhalten - bin aber aktuell bemüht mich in die Thematik einzulesen.
Liebe Grüsse
Livio