Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit batch aus einem Verzeichnis viele txt Dateien mit mehrenen Zeilen in eine txt Datei Zeilenweise inklusive Dateinamen zusammenführen

Frage Entwicklung Batch & Shell

Mitglied: viking

viking (Level 1) - Jetzt verbinden

04.12.2010 um 02:44 Uhr, 7125 Aufrufe, 4 Kommentare

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
Mitglied: Friemler
04.12.2010 um 03:46 Uhr
Hallo viking,

der folgende Code sollte Dein Problem lösen.
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
set "WorkingDir=C:\Temp" 
06.
set "InFiles=%WorkingDir%\*.txt" 
07.
set "OutFile=%WorkingDir%\Ergebnis.txt" 
08.
 
09.
type NUL > "%OutFile%" 
10.
 
11.
for %%f in ("%InFiles%") do ( 
12.
  >>"%OutFile%" <NUL set /p "=%%f@" 
13.
 
14.
  for /f "usebackq delims=" %%l in ("%%f") do ( 
15.
    >>"%OutFile%" <NUL set /p "=%%l@" 
16.
17.
 
18.
  >>"%OutFile%" echo. 
19.
20.
 
21.
endlocal 
22.
exit /b
Die äußere FOR-Schleife ließt Pfad+Namen aller Dateien mit der Endung .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
Bitte warten ..
Mitglied: 76109
04.12.2010 um 13:35 Uhr
Hallo viking!

Dann doch gleich direkt in Excel importieren

Quelltext in ein Modul kopieren, Konstanten anpassen und über <Extra><Makro><Makros> starten:
01.
Const FolderPath = "C:\Temp" 
02.
 
03.
Const SheetName = "Tabelle1" 
04.
 
05.
Sub TextImport() 
06.
    Dim Fso As Object, File As Object, TextFile As Object, Text As Variant, Line As Long 
07.
     
08.
    Set Fso = CreateObject("Scripting.FileSystemObject") 
09.
     
10.
    Sheets(SheetName).Activate:  Cells.ClearContents 
11.
     
12.
    Line = 1 
13.
     
14.
    For Each File In Fso.GetFolder(FolderPath).Files 
15.
        If LCase(Fso.GetExtensionName(File.Name)) = "txt" Then 
16.
            Set TextFile = Fso.OpenTextFile(File.Path) 
17.
             
18.
            Text = Split(TextFile.ReadAll, vbCrLf):  TextFile.Close 
19.
             
20.
            Cells(Line, 1) = Fso.GetBaseName(File.Name) 
21.
             
22.
            Range(Cells(Line, 2), Cells(Line, 2 + UBound(Text))) = Text 
23.
             
24.
            Line = Line + 1 
25.
        End If 
26.
    Next 
27.
 
28.
    Columns.AutoFit    'Spaltenbreite automatisch anpassen? 
29.
End Sub
Wobei Leerzeilen als Leerspalten übernommen werden.

Gruß Dieter
Bitte warten ..
Mitglied: viking
06.12.2010 um 11:27 Uhr
Zitat von Friemler:
Hallo viking,

der folgende Code sollte Dein Problem lösen.
01.
> @echo off 
02.
>  
03.
> setlocal 
04.
>  
05.
> set "WorkingDir=C:\Temp" 
06.
> set "InFiles=%WorkingDir%\*.txt" 
07.
> set "OutFile=%WorkingDir%\Ergebnis.txt" 
08.
>  
09.
> type NUL > "%OutFile%" 
10.
>  
11.
> for %%f in ("%InFiles%") do ( 
12.
>   >>"%OutFile%" <NUL set /p "=%%f@" 
13.
>  
14.
>   for /f "usebackq delims=" %%l in ("%%f") do ( 
15.
>     >>"%OutFile%" <NUL set /p "=%%l@" 
16.
>   ) 
17.
>  
18.
>   >>"%OutFile%" echo. 
19.
> ) 
20.
>  
21.
> endlocal 
22.
> exit /b 
23.
> 
Die äußere FOR-Schleife ließt Pfad+Namen aller Dateien mit der Endung .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



Funtioniert super, ..

Danke!

Gruß viking
Bitte warten ..
Mitglied: viking
06.12.2010 um 11:29 Uhr
Funtioniert super.
(Die Daten gleich in Excel)

Danke!

Gruß viking
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...