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

.csv Dateien Zusammenkopieren und bestimmte Zeilen entfernen

Frage Entwicklung Batch & Shell

Mitglied: t3mp

t3mp (Level 1) - Jetzt verbinden

17.01.2008, aktualisiert 22.01.2008, 13083 Aufrufe, 4 Kommentare

Hallo,

Ich habe einen Ordner voller *.csv Dateien und möchte diese per Batch zu einer Datei zusammenfügen... bis dahin kein Problem.
Allerdings hat jede der *.csv Dateien die in dem Ordner liegen eine Überschrift (Zeile 1).

Diese Überschrift ist sehr lang (ca. 500 Zeichen) und sie soll in der erzeugten Datei nur einmal am Anfang auftauchen.

Hat jemand eine Idee wie ich das Problem lösen kann?

Danke für eure Hilfe!
Mitglied: bastla
17.01.2008 um 21:16 Uhr
Hallo -t3mp-!

Unter der Annahme, dass die genannte Überschrift in allen Dateien identisch ist und daher aus einer beliebigen Datei entnommen werden kann, sowie dass es keine vorgegebene Reihenfolge für die Bearbeitung der einzelnen Dateien gibt, etwa so:
01.
@echo off & setlocal 
02.
set "Ordner=D:\DeinOrdner" 
03.
set "Sammel=D:\DeineSammeldatei.csv" 
04.
 
05.
pushd "%Ordner%" 
06.
if exist "%Sammel%" del "%Sammel%" 
07.
for %%i in (*.csv) do if not exist "%Sammel%" for /f "usebackq delims=" %%z in ("%%i") do if not exist "%Sammel%" echo %%z>"%Sammel%" 
08.
for %%i in (*.csv) do more +1 "%%i">>"%Sammel%" 
09.
popd
Alternativ dazu könntest Du auch einfach vorweg die (vermutlich auch in Zukunft gleich bleibende) Zeile 1 in eine Datei "D:\DeinOrdner\Zeile1.txt" speichern und es danach so versuchen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\DeinOrdner" 
03.
set "Sammel=D:\DeineSammeldatei.csv" 
04.
set "Zeile=D:\DeinOrdner\Zeile1.txt" 
05.
 
06.
copy "%Zeile%" "%Sammel%" >nul 
07.
copy "%Ordner%\*.csv" "%Sammel%.tmp" >nul 
08.
findstr /v /b /c:"Eine ganz lange Ueberschrift" "%Sammel%.tmp">>"%Sammel%" 
09.
del "%Sammel%.tmp"
Hier bist Du zwar weniger flexibel, da bei einer allfälligen Änderung der Zeile 1 nicht nur die zugehörige "Zeile1.txt", sondern auch der Suchstring "SignifikanterZeilenanfangZeile1" im Batch angepasst werden muss, solltest aber andererseits von Leerzeilen in der Sammeldatei verschont bleiben.

Der genannte Suchstring soll so viele Zeichen vom Beginn der Zeile 1 an enthalten, dass damit diese Zeile sicher erkannt und aus der temporären Sammeldatei ausgefiltert werden kann. Es dürfen übrigens auch Leerzeichen Bestandteil dieses Suchstrings sein.

Grüße
bastla
Bitte warten ..
Mitglied: t3mp
17.01.2008 um 21:51 Uhr
Hallo bastla,

danke für deine schnelle Hilfe!

Mit meinen 3 Test-Dateien funktionieren beide Lösungen von dir Problemlos!
Denke mal das es mit den Daten die ich zusammenfügen will auch hinhaut.

Hintergrund des ganzen ist:
Eine Klima-Kammer misst jede Stunde die Temperatur und viele andere Werte in seinem inneren & schreibt diese am ende eines Tages in eine JAHR-MONAT-TAG.csv Datei. Jeden Tag wird also eine neue Datei angelegt. Wenn man dann, die über einen Zeitraum von mehreren Monaten erzeugten Daten betrachten möchte macht sich das mit vielen einzelnen Dateien schlecht.

Mit der Batch-Lösung sind ja die Daten in der Ausgabedatei dann auch gleich Chronologisch geordnet.

Super!
Bitte warten ..
Mitglied: bastla
17.01.2008 um 22:09 Uhr
Hallo -t3mp-!

Um die chronologische Ordnung (anhand des Änderungsdatums der jeweiligen Datei) sicherzustellen, wäre es so besser:
01.
@echo off & setlocal 
02.
set "Ordner=D:\DeinOrdner" 
03.
set "Sammel=D:\DeineSammeldatei.csv" 
04.
 
05.
pushd "%Ordner%" 
06.
if exist "%Sammel%" del "%Sammel%" 
07.
for %%i in (*.csv) do if not exist "%Sammel%" for /f "usebackq delims=" %%z in ("%%i") do if not exist "%Sammel%" echo %%z>"%Sammel%" 
08.
for /f "delims=" %%i in ('dir /b /od *.csv') do more +1 "%%i">>"%Sammel%" 
09.
popd
Noch ein Hinweis: Derzeit ist der Batch darauf ausgelegt, bei jedem Start eine neue Sammeldatei aus allen vorhandenen .csv-Dateien zu erstellen - falls dies nicht gewünscht wäre, sondern die aktuelle Sammeldatei nur (und dann natürlich ohne Kopfzeile) ergänzt werden soll, einfach die Zeile
01.
if exist "%Sammel%" del "%Sammel%"
durch das Voranstellen von REM oder :: auskommentieren (oder auch löschen). Allerdings müssten dann nach jedem Durchlauf die bereits verarbeiteten Dateien aus dem Ordner entfernt werden.

Grüße
bastla
Bitte warten ..
Mitglied: t3mp
22.01.2008 um 18:05 Uhr
Hallo bastla,

vielen Dank nochmals für deine Hilfe.

Das Zusammenkopieren der Dateien funktioniert problemlos.

viele Grüße!
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Bearbeitung einer CSV Datei an bestimmter Spalte
gelöst Frage von IT-WurzelEntwicklung13 Kommentare

Hallo an alle, ich bin gerade diesem Forum beigetreten, und wünsche allen erst einmal ein herzliches "Hallo" nun zu ...

Batch & Shell
Per Batch Datei am Anfang einer .csv einer zeile mit bestimmten Inhalt einfügen und wieder speichern
Frage von FuxxLiBatch & Shell1 Kommentar

Hallo, ich habe folgende Herausforderung. Die Warenwirtschaft des Kunden exportiert nur Dateien mit einer Kopfzeile. Ein Dienstleister benötigt aber ...

Batch & Shell
Batch bei bestimmten Wörtern jeweilige Zeile entfernen
gelöst Frage von Beginner01Batch & Shell19 Kommentare

Hallo an Alle, ich bin mal wieder einer derjenigen, die einfach keine Ahnung haben und Alles haben wollen ;-) ...

Batch & Shell
Bestimmte Zeilen einer Datei addieren - Linux
gelöst Frage von lapvikaBatch & Shell2 Kommentare

Hallo zusammen, ich habe eine Datei die wie folgt aussieht: 536870912 - System1_2 536870912 - System1_3 536870912 - System1_4 ...

Neue Wissensbeiträge
Windows 10

Windows 10 Hello-Anmeldung per Foto ausgehebelt

Tipp von kgborn vor 3 StundenWindows 10

Windows Hello ist eine Funktion, um sich per Fingerabdruck-, Gesichts- oder Iriserkennung bei Windows 10-Geräten anzumelden (siehe), setzt aber ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 11 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 12 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1012 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Heiß diskutierte Inhalte
Windows Server
SCCM 2016: PXE Boot des Clients schlägt fehl
Frage von gabeBUWindows Server23 Kommentare

Hallo Zusammen Ich habe eine Testumgebung erstellt um über SCCM 2016 einen virtuellen Client aufzusetzen. Folgende Maschinen habe ich ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen19 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Exchange Server
Exchange empfängt Emails - Kann aber keine Senden
gelöst Frage von niklasschaeferExchange Server11 Kommentare

Hallo, ich stehe gerade bei mir zuhause vor folgender Problemstellung. Gegeben sind 2x Hyper-V Host mit Windows Server 2016 ...