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

Frage Entwicklung Batch & Shell

Mitglied: BustedDice

BustedDice (Level 1) - Jetzt verbinden

08.03.2014 um 19:43 Uhr, 1874 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Mehrere PDF-Dateien per Batch zusammenfügen (1)

Frage von Grimmli zum Thema Batch & Shell ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (2)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...