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 mit batch bearbeiten - auslesen

Frage Entwicklung Batch & Shell

Mitglied: webbudda

webbudda (Level 1) - Jetzt verbinden

29.07.2011 um 15:39 Uhr, 6615 Aufrufe, 10 Kommentare

Hallo,

ich habe viele unterordner mit *.csv-Dateien. Diese haben folgendes Format:

beispiel.csv:
name ; x
name 2 ; y
name 3 ; z
name 4 ; 1

beispiel2.csv:
name ; x2
name 2 ; y2
name 3 ; z2
name 4 ; 12

Aufgabe: alle csv-Dateien zusammen in eine einzelne mit folgendem Format zusammenführen.

alle.csv:
name; name 2; name 3; name 4
x; y; z; 1
x2; y2; z2; 12


Soweit war ich schon.
del alle.csv
dir /b /s *.csv > test.txt
echo name; name 2; name 3; name 4 >alle.csv
FOR /f "usebackq delims==" %%a IN (test.txt) DO type "%%a" >>alle.csv
del test.txt

Nur das "do" müsste sich jetzt so gestalten, dass er die erste "spalte" eines jeden csv ignioert. Kann mir dabei wer helfen?

Danke & gruß
Mitglied: Friemler
29.07.2011 um 16:18 Uhr
Hallo webbudda,

teste mal folgendes:
01.
@echo off & setlocal 
02.
 
03.
set "SrcDir=E:\Test" 
04.
set "DestDir=E:\Ausgabe" 
05.
set "OutFile=%DestDir%\Alle.csv" 
06.
 
07.
>"%OutFile%" echo Name;Name 2;Name 3;Name 4; 
08.
 
09.
for %%f in ("%SrcDir%\*.csv") do ( 
10.
  for /f "usebackq tokens=1* delims=;" %%l in ("%%f") do ( 
11.
    >>"%OutFile%" <NUL set /p "=%%m;" 
12.
13.
  >>"%OutFile%" echo. 
14.
)
Quell- und Zielverzeichnis müssen verschieden sein, sonst wird auch die Zieldatei von der äußeren FOR-Schleife gefunden und somit verarbeitet.

Kleiner Schönheitsfehler: Alle Zeilen der erzeugten CSV-Datei enden mit einem Semikolon, was quasi eine zusätzliche leere Spalte erzeugt. Falls die Datei nicht mit Excel weiterverarbeitet werden soll, einfach in Excel laden und nochmal als CSV speichern, dann verschwinden die abschließenden Semikolons.

Gruß
Friemler
Bitte warten ..
Mitglied: webbudda
29.07.2011 um 16:25 Uhr
Super, das klappt schon ganz gut. WIe kann ich das rekursiv gestalten, dass in %SrcDir% in allen unterordnern nach csv allen gesucht wird? thx
Bitte warten ..
Mitglied: Skyemugen
29.07.2011 um 16:27 Uhr
Aloha,

tja, heute ist Freitag, da bau ich wieder große Klötzchen *gg*

Wenn du wirklich nur vier Zeilen pro Datei hast und keine Semikola am Ende zusätzlich magst, hätte ich auch noch das meine übliche irgendwie geht das auch komplizierter - Nummer im Angebot:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Pfad=E:\Skripte\Ablage" 
03.
set "Liste=E:\Skripte\alle.csv" 
04.
if exist "%Liste%" del "%Liste%" 
05.
>"%Liste%" echo name;name2;name3;name4 
06.
for /f "delims=" %%s in ('dir /b /s "%Pfad%\*.csv"') do ( 
07.
	for /f "usebackq delims=; tokens=2" %%m in ("%%s") do ( 
08.
		set "Z4=!Z3!" 
09.
		set "Z3=!Z2!" 
10.
		set "Z2=!Z1!" 
11.
		set "Z1=%%m" 
12.
13.
	>>"%Liste%" echo !Z4!;!Z3!;!Z2!;!Z1! 
14.
	 
15.
16.
pause 
17.
goto :eof
greetz André

edit: Porzellan und so
Bitte warten ..
Mitglied: webbudda
29.07.2011 um 16:39 Uhr
Wenn das mit dem rekursiv noch rein kommt, ist alles gut. folgendes klappt nicht

for %%f in ('dir /b /s %SrcDir%\*.csv') do (
for /f "usebackq tokens=1* delims=;" %%l in ("%%f") do (
>>"%OutFile%" <NUL set /p "=%%m;"
)
>>"%OutFile%" echo.
)
Bitte warten ..
Mitglied: Friemler
29.07.2011 um 16:42 Uhr
Moin André,

der TO hat in seinen Beispieldaten bei "Name 4" numerische Werte angegeben. Keine Ahnung, ob das nun wirklich so ist oder ob es sich doch um Personennamen handelt. Bei numerischen Werten würde Dein Script aber möglicherweise in die Grütze fassen, da Du die Ausgabeumleitung hinter die Werte schreibst, die von ECHO ausgegeben werden. Dadurch könnte dann sowas wie echo x;y;z;2>>"%Liste%" entstehen. Somit würde diese Zeile als x;y;z; auf dem Bildschirm landen und nicht in der Datei.

Gruß
Friemler
Bitte warten ..
Mitglied: Friemler
29.07.2011 um 16:45 Uhr
Hallo webbudda,

sorry, das mit dem "rekursiv" habe ich verdrängt .

Versuche es mal so:
01.
@echo off & setlocal 
02.
 
03.
set "SrcDir=E:\Test" 
04.
set "DestDir=E:\Ausgabe" 
05.
set "OutFile=%DestDir%\Alle.csv" 
06.
 
07.
>"%OutFile%" echo Name;Name 2;Name 3;Name 4; 
08.
 
09.
for /r "%SrcDir%" %%f in (*.csv) do ( 
10.
  for /f "usebackq tokens=1* delims=;" %%l in ("%%f") do ( 
11.
    >>"%OutFile%" <NUL set /p "=%%m;" 
12.
13.
  >>"%OutFile%" echo. 
14.
)
Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
29.07.2011 um 16:54 Uhr
Aloha Friemler,

in der Tat, das habe ich nicht bedacht aber im Test habe ich als Name 4 eine 1 und auch eine 2 und es stört ihn nicht, dennoch: sicher ist bestimmt sicher.

greetz André
Bitte warten ..
Mitglied: Friemler
29.07.2011 um 17:20 Uhr
Hallo André,

ah, das könnte mit der von Dir verwendeten verzögerten Variablenerweiterung zu tun haben, dann wird die Befehlszeile wohl anders geparst. Auch gut zu wissen.

Gruß
Friemler
Bitte warten ..
Mitglied: webbudda
31.07.2011 um 21:24 Uhr
Durchaus möglich, dass eine Zeile mit "2" endet. Würde also kein problem darstellen?
Bitte warten ..
Mitglied: Friemler
31.07.2011 um 22:45 Uhr
Hallo webbudda,

da Skyemugen sein Script geändert hat (und das anscheinend sowieso auch vorher kein Problem war), kannst Du beide der obigen Scripts verwenden.

Gruß
Friemler
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch zum bearbeiten mehrerer CSV
Frage von Matzus87Batch & Shell3 Kommentare

Hallo Zusammen, ich bin neu hier und arbeite mich gerade in die Batch Programmierung ein. Ich sitze momentan an ...

Batch & Shell
Batch-Problem Inhalt aus Datei auslesen, bearbeiten und dann wieder speichern
gelöst Frage von AllForOne94Batch & Shell9 Kommentare

Hallo Com, Ich habe eigentlich ein relativ simples Problem. Meine Ausgangsdatei ist so aufgebaut: 0,00h 1,00h 2,18h 3,00h 4,00h ...

Batch & Shell
Netshare Batch aus CMD auslesen und in CSV erstellen
gelöst Frage von nowyouseeme93Batch & Shell13 Kommentare

Das bekomme ich aus cmd Befehl: Share name Resource Remark ADMIN$ C:\Windows Remote Admin IPC$ Remote IPC I$ I:\ ...

VB for Applications
CSV Datei automatisch bearbeiten und abspeichern
gelöst Frage von klaus1985VB for Applications6 Kommentare

Hallo , Ich habe hier jeden Monat eine CSV Datei die in unserem ERP System generiert wird und von ...

Neue Wissensbeiträge
Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 5 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 7 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 10 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 16 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...