Mehrere CSV Dateien nach Zelleninhalt umbenennen und in einer XLS neben einander setzen mit einer Batch Datei
Hallo zusammen,
ich lade einige CSV Dateien um eine Aussage bezüglich Wachstum, Preise..zu treffen. Das Problem dabei ist, dass die CSV Dateien separat sind. Man muss sie in einem XLS-Datenblatt stellen um damit weiterarbeiten zu können. Das zweite Problem: Die CSV-Dateien haben alle einen Standardnamen.
Ich habe es mir so vorgestellt, eine Batch datei zu schreiben, die:
1- die CSV- Dateien nach Zelleninhalt umzubenennen. Es soll aus "Maße" und "Seriennummer" bestehen (siehe Bild: 1 )
Vorsicht: In der Seriennummer gibt es einen Schrägstrich. Es soll durch einen Unterstrich ersetzt werden. Danach kommt eine Ziffer, und nach dieser Ziffer möchte ich einen unterstrich setzen. An dieser Stelle kommen manchmal einige Ziffern/Buchstaben und manchmal nicht. Wenn sie da sind, muss man sie behalten und danach einen Unterstrich setzen. Ansonsten wenn sie nicht da sind, muss man einfach den unterstricht setzen. Jetzt kommen die "Maße" hinten dran um den Titel zu Vervollständigen.
z.B.: Original Maße = 23x17x5 Serienn. = 45698/4 XYZ
Gewünschter Titel aus dieser Kombi==> 45698_4_XYZ_23x17x5
2- CSV- Dateien sehen wie im Bild 1 aus.
Sie müssen mit Hilfe des gleichen Batches in einer einzigen XLS Tabelle zusammengeführt werden.
Dabei:
- müssen die einzelnen Tabellen NEBEN EINANDER stehen (nicht unter einander).
- Von der ersten Tabelle müssen nur die ersten zwei Spalten übernommen werden.
- Von den weiteren Tabellen braucht man nur die Spalte mit den Zahlen (2. Spalte).
- Das Endergebnis soll wie im Bild 2 aussehen.
Ich bin sehr dankbar für jede Hilfe
Viele Grüße
Thomas
ich lade einige CSV Dateien um eine Aussage bezüglich Wachstum, Preise..zu treffen. Das Problem dabei ist, dass die CSV Dateien separat sind. Man muss sie in einem XLS-Datenblatt stellen um damit weiterarbeiten zu können. Das zweite Problem: Die CSV-Dateien haben alle einen Standardnamen.
Ich habe es mir so vorgestellt, eine Batch datei zu schreiben, die:
1- die CSV- Dateien nach Zelleninhalt umzubenennen. Es soll aus "Maße" und "Seriennummer" bestehen (siehe Bild: 1 )
Vorsicht: In der Seriennummer gibt es einen Schrägstrich. Es soll durch einen Unterstrich ersetzt werden. Danach kommt eine Ziffer, und nach dieser Ziffer möchte ich einen unterstrich setzen. An dieser Stelle kommen manchmal einige Ziffern/Buchstaben und manchmal nicht. Wenn sie da sind, muss man sie behalten und danach einen Unterstrich setzen. Ansonsten wenn sie nicht da sind, muss man einfach den unterstricht setzen. Jetzt kommen die "Maße" hinten dran um den Titel zu Vervollständigen.
z.B.: Original Maße = 23x17x5 Serienn. = 45698/4 XYZ
Gewünschter Titel aus dieser Kombi==> 45698_4_XYZ_23x17x5
2- CSV- Dateien sehen wie im Bild 1 aus.
Sie müssen mit Hilfe des gleichen Batches in einer einzigen XLS Tabelle zusammengeführt werden.
Dabei:
- müssen die einzelnen Tabellen NEBEN EINANDER stehen (nicht unter einander).
- Von der ersten Tabelle müssen nur die ersten zwei Spalten übernommen werden.
- Von den weiteren Tabellen braucht man nur die Spalte mit den Zahlen (2. Spalte).
- Das Endergebnis soll wie im Bild 2 aussehen.
Ich bin sehr dankbar für jede Hilfe
Viele Grüße
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 380200
Url: https://administrator.de/contentid/380200
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo,
Das kann doch mittels Excekl gemacht werden. Und da einCSV keinerlei Formatierungen, Formeln oder sonstwas beeinhalten, sollte eine einfaches XLS (X) Datei dabei heraus kommen.Also, was hat da nicht funktioniert?
Batch - Dateinamen auslesen, umbenennen + dreistellige Zahl vor bisherigen Dateinamen setzen.
Batch-Dateien: Unterverzeichnisse auslesen und Dateien umbenennen
Dateienamen in Ordnernamen umbenennen
Per VBA im Verzeichniss dateien mit Wildcard umbenennen
VBA - VBS : Umbennen und Verschieben von Dateien in Loop
Mehrfach umbenennen per Batch
Mit Excel VBA kann auch der erste Teil (umbenennen von Dateien) gemacht werden.
https://stackoverflow.com/questions/48006115/rename-all-files-in-a-folde ...
https://stackoverflow.com/questions/26824225/loop-through-folder-renamin ...
https://www.extendoffice.com/documents/excel/2339-excel-rename-files-in- ...
Sogar Powershell ist dazu geeignet...
Gruß,
Peter
Das kann doch mittels Excekl gemacht werden. Und da einCSV keinerlei Formatierungen, Formeln oder sonstwas beeinhalten, sollte eine einfaches XLS (X) Datei dabei heraus kommen.Also, was hat da nicht funktioniert?
Die CSV Dateien befinden sich in einem Ordner und ich möchte sie im Ordner umbenennen.
Mittels BATCH oder VBA sehr wohl machbar. suche nutzenBatch - Dateinamen auslesen, umbenennen + dreistellige Zahl vor bisherigen Dateinamen setzen.
Batch-Dateien: Unterverzeichnisse auslesen und Dateien umbenennen
Dateienamen in Ordnernamen umbenennen
Per VBA im Verzeichniss dateien mit Wildcard umbenennen
VBA - VBS : Umbennen und Verschieben von Dateien in Loop
Mehrfach umbenennen per Batch
Excel VBA ist sicherlich geeignet für den zweiten Teil (Tabellen neben einander platzieren). Ich wusste nicht ob die VBA beim Umbenennen vom Ordnerinhalt helfen könnte. Schleifen Anfang, CSV Datei Öffnen, Daten auslesen und Namen zusammenbauen, CSV Datei schliessen, CSV Datei umbenennen, Schleife Fertig wenn alle Dateien (welche in Frage kommen - kriterium) umbenannt wurden
https://stackoverflow.com/questions/48006115/rename-all-files-in-a-folde ...
https://stackoverflow.com/questions/26824225/loop-through-folder-renamin ...
https://www.extendoffice.com/documents/excel/2339-excel-rename-files-in- ...
Sogar Powershell ist dazu geeignet...
Gruß,
Peter
Hallo,
Gruß,
Peter
Zitat von @Tomilai:
Manuel geht das wohl. Mein Problem: ich möchte es automatisieren, z.B. eine Batch- oder vbs, vba Datei erstellen, die nichts anders macht als die CSV Dateien in Excel zu konvertieren.
Das sist schon klar, aber dir ist der Unterschied zwischen einer .csv und einer.xls(x) Datei klat? In einer CSV sind nur deine Daten und evtl. eine Zeilen mit den Spaltennamen. In einer .xls(x) sind Excel Header und Formatierungen , Drucker usw. alles enthalten, daneben sid auch deine daten soweie Formeln usw. enthalten. Das ist nicht einfach nur Konvertieren, sondern ein Import nach Excel und Speichern unter... Dadrauf bezog sich doch dein Funktioniert nicht und ich fragte was nicht funktionierte.Manuel geht das wohl. Mein Problem: ich möchte es automatisieren, z.B. eine Batch- oder vbs, vba Datei erstellen, die nichts anders macht als die CSV Dateien in Excel zu konvertieren.
Der Name, der eingesetzt werden soll, befindet sich immer in der gleichen Zelle jeder Excel Tabelle (z.B. B12). Ich habe keine Namensliste.
Machs mit VBA. Du kannst auch den Makro Rekorder nutzen damit du du deine Ersten Schritte damit machst und gezielte Fragen dann hier rein stellen. Lernen musst du schon selbst, oder einen Dienstleister entlohnen der es für dich macht.Es ist eine Menge Dateien und sie manuell zu bearbeiten nimmt einfach viel zeit in Anspruch,
Auch das ist Klar, und es ist auch ne menge Zeit die ins VBA gesteckt wird.Gruß,
Peter
Mit VBA habe ich das hier schon ich weis nicht mehr wie oft gezeigt, findest du in meinen Beiträgen zu CSV Dateien en masse ...
Da du hier leider keinen Raw-Output deiner CSV-Dateien zur Verfügung stellst, gehe ich von folgendem Format deiner CSV-Dateien anhand der Excel-Bilder aus :
Passend dazu folgendes Powershell-Skript das die Daten vernünftig transponiert als CSV zusammenfasst welche du dann mit Excel fertig öffnen kannst:
Ordner in Zeile 1 und Ausgabepfad in Zeile 2 anpassen, fertig.
Mehr Support gibts gerne gegen Aufwandsentschädigung via PN .
Grüße Uwe
Da du hier leider keinen Raw-Output deiner CSV-Dateien zur Verfügung stellst, gehe ich von folgendem Format deiner CSV-Dateien anhand der Excel-Bilder aus :
Info;
;Zahl
Gewicht;123
Maße;23x44x22
Umfang;634
Volumen;3345
Type;22-345
Seriennummer;45698/4 XYZ
Einnahme;3322
Ausgabe;2111
Ordner in Zeile 1 und Ausgabepfad in Zeile 2 anpassen, fertig.
$folder = 'D:\Daten'
$output = "D:\merged.csv"
$all = @()
gci $folder -Filter *.csv -File | %{
[string[]]$content = gc $_.Fullname | select -skip 2
$delim = [regex]::match($content,'^("[^"]*"|[^,;]+)\s*([,;\t])').Groups[2].Value
$obj = [pscustomobject]@{}
($content -replace $delim,"=" | ConvertFrom-StringData) | %{$_.GetEnumerator() | %{Add-Member -InputObject $obj -MemberType NoteProperty -Name $_.Key -Value $_.Value}}
$all +=$obj
$_ | rename-item -NewName "$($obj.Seriennummer -replace '[/\s]+','_')_$($obj.Maße)$($_.Extension)" -Force -verbose
}
$all | export-csv $output -Delimiter $delim -NoType -Encoding UTF8
Mehr Support gibts gerne gegen Aufwandsentschädigung via PN .
Grüße Uwe
Nun, mit den vorliegenden Daten finde ich liefert es ein sogar besser wartbares als du oben vor hast, nämlich in Zeilenform. Gerade bei vielen CSV Dateien wesentlich besser als die Spalten-Variante von dir. Willst du die Daten anders rum brauchst du das Ergebnis in Excel nur durch die transponieren Funktion jagen, ganz einfach .
Hallo,
Gemauso wie dein Konvertieren nicht funktioniert, lieferst du keinen Hinweis auf den Fehler, das Fehlerbild noch irgendwelche Fehlermeldung noch sonst etwas was uns über deinen erhaltenen Fehler etwas aussagt als "Ich hab Fehler, nun sucht ma schön"....
Gruß,
Peter
Gemauso wie dein Konvertieren nicht funktioniert, lieferst du keinen Hinweis auf den Fehler, das Fehlerbild noch irgendwelche Fehlermeldung noch sonst etwas was uns über deinen erhaltenen Fehler etwas aussagt als "Ich hab Fehler, nun sucht ma schön"....
Gruß,
Peter