Mit batch aus einem Verzeichnis viele txt Dateien mit mehrenen Zeilen in eine txt Datei Zeilenweise inklusive Dateinamen zusammenführen
Hallo,
wieder mal was für bastla oder die anderen Experten
Ich habe ein Verzeichnis c:\temp
In diesem habe ich viele Textdateien. *.txt
Jede Textdateien hat mehrere Zeilen jedoch weniger als 100 Zeilen und die Informationen in den Zeilen ist auch nicht größer als maximal 50 Zeichen.
Ziel:
Ich möchte per batch eine Textfile „Ergebnis.txt“ im gleichen Verzeichnis erzeugen, welches alle vorhandenen Textdateien zu einer zusammenfügt,
wobei aber der Inhalt der einzelnen Textdateien, Zeile für Zeile jeweils als eine Zeile in die neue Datei "Ergebnis.txt" geschrieben werden soll.
Ich benötige natürlich einen Trenner.
Der Dateiname der Ursprungsdateien soll jeweils als erste Information in die Zeile geschrieben werden.
Ich möchte die Datei dann in Excel importieren, bzw. einlesen.
Wenn gleich eine Excel Datei erzeugt werden könnte wäre natürlich noch besser.
Die einzelnen Zeilen der Ursprungsdateien sollen dann demzufolge in Spalten sein.
Für die Lösung einer Textdatei würde ich daher einen passenden Trenner benötigen.
Ich verwende Excel 2007 daher würde der Klammeraffe ganz passend sein, Excel 2003 auch kein Problem.
Gruß viking
wieder mal was für bastla oder die anderen Experten
Ich habe ein Verzeichnis c:\temp
In diesem habe ich viele Textdateien. *.txt
Jede Textdateien hat mehrere Zeilen jedoch weniger als 100 Zeilen und die Informationen in den Zeilen ist auch nicht größer als maximal 50 Zeichen.
Ziel:
Ich möchte per batch eine Textfile „Ergebnis.txt“ im gleichen Verzeichnis erzeugen, welches alle vorhandenen Textdateien zu einer zusammenfügt,
wobei aber der Inhalt der einzelnen Textdateien, Zeile für Zeile jeweils als eine Zeile in die neue Datei "Ergebnis.txt" geschrieben werden soll.
Ich benötige natürlich einen Trenner.
Der Dateiname der Ursprungsdateien soll jeweils als erste Information in die Zeile geschrieben werden.
Ich möchte die Datei dann in Excel importieren, bzw. einlesen.
Wenn gleich eine Excel Datei erzeugt werden könnte wäre natürlich noch besser.
Die einzelnen Zeilen der Ursprungsdateien sollen dann demzufolge in Spalten sein.
Für die Lösung einer Textdatei würde ich daher einen passenden Trenner benötigen.
Ich verwende Excel 2007 daher würde der Klammeraffe ganz passend sein, Excel 2003 auch kein Problem.
Gruß viking
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156325
Url: https://administrator.de/forum/mit-batch-aus-einem-verzeichnis-viele-txt-dateien-mit-mehrenen-zeilen-in-eine-txt-datei-zeilenweise-inklusive-156325.html
Ausgedruckt am: 10.01.2025 um 11:01 Uhr
4 Kommentare
Neuester Kommentar
Hallo viking,
der folgende Code sollte Dein Problem lösen.
Die äußere FOR-Schleife ließt Pfad+Namen aller Dateien mit der Endung
Einschränkung: Leerzeilen werden nicht in die Ausgabedatei übernommen.
Zum Laden der Ausgabedatei in Excel musst Du Dich durch den Import-Dialog für CSV-Dateien klicken (Datei->Öffnen...->Dateityp auf Textdateien (*.prn; *.txt; *.csv)) und als Trennzeichen
Gruß
Friemler
der folgende Code sollte Dein Problem lösen.
@echo off
setlocal
set "WorkingDir=C:\Temp"
set "InFiles=%WorkingDir%\*.txt"
set "OutFile=%WorkingDir%\Ergebnis.txt"
type NUL > "%OutFile%"
for %%f in ("%InFiles%") do (
>>"%OutFile%" <NUL set /p "=%%f@"
for /f "usebackq delims=" %%l in ("%%f") do (
>>"%OutFile%" <NUL set /p "=%%l@"
)
>>"%OutFile%" echo.
)
endlocal
exit /b
.txt
im angegebenen Verzeichnis ein. In Zeile 11 wird der Dateiname mit einem nachfolgenden @
als Trennzeichen in die Ausgabedatei geschrieben. Der Befehl <NUL set /p "=xxx"
gibt xxx
ohne nachfolgenden Zeilenumbruch aus, deshalb werden auch die Dateizeilen, die von der inneren FOR-Schleife eingelesen und in Zeile 14 mit nachfolgendem Trennzeichen @
in die Ausgabedatei geschrieben werden, alle in eine Zeile der Ausgabedatei geschrieben. In Zeile 17 wird der Zeilenumbruch zum Abschluss einer Zeile in die Ausgabedatei geschrieben.Einschränkung: Leerzeilen werden nicht in die Ausgabedatei übernommen.
Zum Laden der Ausgabedatei in Excel musst Du Dich durch den Import-Dialog für CSV-Dateien klicken (Datei->Öffnen...->Dateityp auf Textdateien (*.prn; *.txt; *.csv)) und als Trennzeichen
@
wählen.Gruß
Friemler
Hallo viking!
Dann doch gleich direkt in Excel importieren
Quelltext in ein Modul kopieren, Konstanten anpassen und über <Extra><Makro><Makros> starten:
Wobei Leerzeilen als Leerspalten übernommen werden.
Gruß Dieter
Dann doch gleich direkt in Excel importieren
Quelltext in ein Modul kopieren, Konstanten anpassen und über <Extra><Makro><Makros> starten:
Const FolderPath = "C:\Temp"
Const SheetName = "Tabelle1"
Sub TextImport()
Dim Fso As Object, File As Object, TextFile As Object, Text As Variant, Line As Long
Set Fso = CreateObject("Scripting.FileSystemObject")
Sheets(SheetName).Activate: Cells.ClearContents
Line = 1
For Each File In Fso.GetFolder(FolderPath).Files
If LCase(Fso.GetExtensionName(File.Name)) = "txt" Then
Set TextFile = Fso.OpenTextFile(File.Path)
Text = Split(TextFile.ReadAll, vbCrLf): TextFile.Close
Cells(Line, 1) = Fso.GetBaseName(File.Name)
Range(Cells(Line, 2), Cells(Line, 2 + UBound(Text))) = Text
Line = Line + 1
End If
Next
Columns.AutoFit 'Spaltenbreite automatisch anpassen?
End Sub
Gruß Dieter