Top-Themen

Aktuelle Themen (A bis Z)

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 zwei Textfiles in einem zusammenfügen

Frage Entwicklung Batch & Shell

Mitglied: BustedDice

BustedDice (Level 1) - Jetzt verbinden

08.03.2014 um 19:43 Uhr, 1955 Aufrufe, 9 Kommentare, 2 Danke

Hallo zusammen brauch eure Hilfe bei einem Batch.
Habe zwei .txt Dateien die ich in eine .txt zusammen fügen will.
Hoffe mir kann jemand weiter helfen....

z.b
------------------------------------------------------------input1
input1.txt

Inhalt der input1.txt

Name1
Name2
Name3
Name4
...
------------------------------------------------------------input2
input2.txt

Inhalt der input2.txt

Bezeichnung1
Bezeichnung2
Bezeichnung3
Bezeichnung4
...
------------------------------------------------------------output-aus-1+2
output-aus-1+2.txt

Inhalt der output-aus-1+2.txt

Name1
Bezeichnung1
Name2
Bezeichnung2
Name3
Bezeichnung3
Name4
Bezeichnung4
...
Mitglied: BirdyB
08.03.2014 um 19:50 Uhr
Hallo BustedDice,

es sollen also immer alternierend die Zeilen aus der einen bzw. der anderen Batch ausgelesen werden?

Gruß

Berthold
Bitte warten ..
Mitglied: bastla
08.03.2014, aktualisiert um 19:53 Uhr
Hallo BustedDice!

Soferne keine Leerzeilen zu berücksichtigen sind, etwa so:
01.
@echo off & setlocal 
02.
set "Ein1=input1.txt" 
03.
set "Ein2=input2.txt" 
04.
set "Aus=output-aus-1+2.txt" 
05.
 
06.
del "%Aus%" 2>nul 
07.
(for /f "usebackq delims=" %%i in ("%Ein1%") do ( 
08.
    set "Zeile1=%%i" 
09.
    set "Zeile2=" 
10.
    set /p Zeile2=" 
11.
    setlocal enabledelayedexpansion 
12.
    >>"%Aus%" echo(!Zeile1! 
13.
    >>"%Aus%" echo(!Zeile2! 
14.
    endlocal 
15.
))<"%Ein2%
Grüße
bastla
Bitte warten ..
Mitglied: BustedDice
08.03.2014 um 20:04 Uhr
Danke an bastla alles bestens! Wie mach ich das wenn noch eine 3 und 4 input.txt dazu kommt?
Bitte warten ..
Mitglied: bastla
08.03.2014, aktualisiert um 20:07 Uhr
Hallo BustedDice!
Wie mach ich das wenn noch eine 3 und 4 input.txt dazu kommt?
Mit VBS ...

Grüße
bastla
Bitte warten ..
Mitglied: BustedDice
08.03.2014 um 20:26 Uhr
Mit VBS hab ich noch nicht viel Erfahrung...
Bitte warten ..
Mitglied: bastla
08.03.2014, aktualisiert um 21:10 Uhr
Hallo BustedDice!
Mit VBS hab ich noch nicht viel Erfahrung...
Kann ja noch kommen ...

Für eine variable Anzahl von input-Dateien könnte das etwa so aussehen (anzupassen sind die Zeilen 1 und 2):
01.
EinDateien = Array("D:\input1.txt", "D:\input2.txt", "D:\input3.txt", "D:\input4.txt") 
02.
AusDatei = "D:\output.txt" 
03.
Delim = vbNewline 'Feldtrennzeichen = Zeilenschaltung 
04.
'Delim = ";" 'für CSV 
05.
 
06.
DatAnzahl = UBound(EinDateien) 'Anzahl Eingabedateien ermitteln 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
MaxZeile = 0 
10.
For i = 0 To DatAnzahl 'Alle Eingabedateien durchgehen, ... 
11.
    Z = Split(fso.OpenTextFile(EinDateien(i)).ReadAll, vbNewline) '... zeilenweise in Matrix einlesen und ... 
12.
    If UBound(Z) > MaxZeile Then MaxZeile = UBound(Z) '... höchste Zeilenanzahl ermitteln. 
13.
Next 
14.
 
15.
ReDim A(MaxZeile, DatAnzahl) 'Matrix für alle Felder (lt Datei- und Zeilenanzahl) erstellen 
16.
 
17.
For Spalte = 0 To DatAnzahl 'Nochmals alles einlesen (je Datei entsteht eine Spalte) ... 
18.
    Z = Split(fso.OpenTextFile(EinDateien(Spalte)).ReadAll, vbNewline) 
19.
    For Zeile = 0 To UBound(Z) '... und feldweise ... 
20.
        A(Zeile, Spalte) = Z(Zeile) ' ... in A-Matrix übertragen. 
21.
    Next 
22.
Next 
23.
 
24.
Set Aus = fso.CreateTextFile(AusDatei) 
25.
For Zeile = 0 To MaxZeile 'Alle Felder (= Zeilen)... 
26.
    For Spalte = 0 To DatAnzahl '... aller Dateien (= Spalten) ... 
27.
        If Spalte <> DatAnzahl Then 
28.
            Aus.Write A(Zeile, Spalte) & Delim '... getrennt in Ausgabedatei schreiben; ... 
29.
        Else 
30.
            Aus.Write A(Zeile, Spalte) & vbNewLine '... nach dem letzten Feld jedenfalls Zeilenschaltung. 
31.
        End If 
32.
    Next 
33.
Next
Das "Zusammenbauen" der Daten findet hier zunächst im Speicher (genauer: im 2-dimensionalen Array A) statt, wobei die Größe des Arrays bestimmt wird, indem vorweg alle Eingabedateien einmal gelesen und auf ihre Zeilenanzahl untersucht werden - daraus und aus der Anzahl der Eingabedateien ergeben sich die Dimensionen von A().

Im zweiten Schritt werden die Dateien der Reihe nach eingelesen, in Zeilen aufgeteilt und die Zeileninhalte dem jeweiligen Array-Element der Ausgabematrix zugeordnet.

Im letzten Schritt werden dann alle Elemente der Ausgabematrix zeilenweise in die Zieldatei geschrieben.

Grüße
bastla

[Edit] Für mehr Flexibilität Feldtrennzeichen hinzugefügt; durch Änderung des Trennzeichens auf ";" könnte zB eine CSV-Datei erzeugt werden [/Edit]

[Edit2] Fehler in Zeile 20 behoben [/Edit2]
Bitte warten ..
Mitglied: BustedDice
08.03.2014 um 21:07 Uhr
Okay leider funktioniert es nicht ganz

------------------------------------------------------------input1
input1.txt

Inhalt der input1.txt

Name1
Name2
Name3
Name4
...
------------------------------------------------------------input2
input2.txt

Inhalt der input2.txt

Bezeichnung1
Bezeichnung2
Bezeichnung3
Bezeichnung4
...
------------------------------------------------------------input3
input3.txt

Inhalt der input3.txt

Größe1
Größe2
Größe3
Größe4
...
------------------------------------------------------------input4
input4.txt

Inhalt der input4.txt

Datum1
Datum2
Datum3
Datum4
...
------------------------------------------------------------output
output

Inhalt der output sieht aber leider so aus:

Name1
Bezeichnung1
Größe1
Datum1
Name1
Bezeichnung1
Größe1
Datum1
Name1
Bezeichnung1
Größe1
Datum1
............
Bitte warten ..
Mitglied: bastla
08.03.2014 um 21:12 Uhr
Hallo BustedDice!

Hatte leider eine Veschlimmbesserung eingebaut, indem ich die Laufvariablen zunächst - wie üblich - mit i und j benannt, danach aber auf Zeile und Spalte (zur besseren Nachvollziehbarkeit) umbenannt (und im Fall der Zeile 20 leider einmal nicht) hatte - sollte jetzt passen ...

Grüße
bastla
Bitte warten ..
Mitglied: BustedDice
08.03.2014 um 21:19 Uhr
Tausend Dank für die Hilfe besser gehts nicht ;)
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Suche Batch-Programm zum Zusammenfügen zweier PDF-Dateien
Beitrag von 3 Kommentare

Frage von Sinzal zum Thema Batch & Shell

Entwicklung
Zwei .txt Dateien via PowerShell zusammenfügen
Beitrag von 2 Kommentare

Frage von Alex1809 zum Thema Entwicklung

Batch & Shell
Batch - Differenz zwischen zwei Zeilen ermitteln
Beitrag von 3 Kommentare

Frage von ooDavid zum Thema Batch & Shell

Exchange Server
Exchange 2016 - Verteilergruppen zusammenfügen
Beitrag von 2 Kommentare

Frage von pablovic zum Thema Exchange Server

Neue Wissensbeiträge
Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Beitrag von 2 Kommentare

Information von admtech zum Thema Administrator.de Feedback

Vmware

VMware Desktopprodukte sind verwundbar

Beitrag von

Information von Penny.Cilin zum Thema Vmware

Datenschutz

Session-Replay: Viele beliebte Webseiten zeichnen jegliche Texteingabe auf

Beitrag von 2 Kommentare

Information von Penny.Cilin zum Thema Datenschutz

Sicherheit

Zufällige Speicherzuweisung: Windows-Bug hebelt Sicherheitsmechanismus ASLR aus

Beitrag von 1 Kommentar

Information von Penny.Cilin zum Thema Sicherheit

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Beitrag von 24 Kommentare

Frage von ahstax zum Thema Visual Studio

Windows Netzwerk
Netzwerk Neustrukturierung
Beitrag von 16 Kommentare

Frage von IT-Dreamer zum Thema Windows Netzwerk

Windows Server
RDP macht Server schneller???
Beitrag von 16 Kommentare

Frage von JaniDJ zum Thema Windows Server

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Beitrag von 15 Kommentare

Frage von Akcent zum Thema Windows 10