Per Batch eine Spalte in eine CSV Datei einfügen
Hallo Forum
Folgende Ausgangssituation.
Ich habe eine CSV Artikelliste mit insgesamt 9 Spalten, einer Kopfzeile und etwa 50 000 Zeilen wo die Artikel gelistet sind.
Nun möchte ich eine 10. Spalte am ende hinzufügen mit einer Kopfzeile ( zb. "Lagerbestand beachten") und bis am ende ca. 50 000 zielen den Buchstaben "Y" stehen haben.
Das ganze brauche ich für einen Lagerbestand Import.
Da die CSV ständig Aktualisiert wird wollte ich fragen ob es eine Möglichkeit gibt das ganze per Batch oder VBS zu realisieren.
Ähnliche Skripte hab ich schon gefunden nur leider nicht das was ich möchte.
Danke im voraus.
Lg Alex
Folgende Ausgangssituation.
Ich habe eine CSV Artikelliste mit insgesamt 9 Spalten, einer Kopfzeile und etwa 50 000 Zeilen wo die Artikel gelistet sind.
Nun möchte ich eine 10. Spalte am ende hinzufügen mit einer Kopfzeile ( zb. "Lagerbestand beachten") und bis am ende ca. 50 000 zielen den Buchstaben "Y" stehen haben.
Das ganze brauche ich für einen Lagerbestand Import.
Da die CSV ständig Aktualisiert wird wollte ich fragen ob es eine Möglichkeit gibt das ganze per Batch oder VBS zu realisieren.
Ähnliche Skripte hab ich schon gefunden nur leider nicht das was ich möchte.
Danke im voraus.
Lg Alex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 290123
Url: https://administrator.de/contentid/290123
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
14 Kommentare
Neuester Kommentar
Mit Powershell schnell gemacht:
Gruß jodel32
$csv = Import-CSV 'c:\Datei.csv' -delimiter ';'
$csv | add-member -MemberType NoteProperty -Name 'Lagerstand beachten' -Value 'Y' -Force
$csv | Export-CSV 'c:\Datei-fertig.csv' -NoType -delimiter ';' -Encoding UTF8
Gruß jodel32
Den Encoding-Parameter am Ende einfach auf Default stellen.
Läst sich da auch was mit einer Formel machen?
Klar, für Powershell null Problemo, damit geht alles:NameDerSpalte ersetzt du durch den Namen der Zusammenfassungsspalte und die anderen Namen der Spalten in Zeile 3 des Codes ersetzt du ebenfalls durch Ihre richtigen Namen
$csv = Import-CSV 'c:\Datei.csv' -delimiter ';'
$csv | add-member -MemberType NoteProperty -Name 'Lagerstand beachten' -Value 'Y' -Force
$csv | %{$_.'NameDerSpalte' = $_.'Spalte2' + " " + $_.'Spalte3' + " " + $_.'Spalte4'}
$csv | Export-CSV 'c:\Datei-fertig.csv' -NoType -delimiter ';' -Encoding Default
jodel32
Zitat von @mayli01:
Funktioniert einwandfrei bis auf das, dass mir bei den gesamten spalten jetzt die umlaute als ? angezeigt werden.
Moin,Funktioniert einwandfrei bis auf das, dass mir bei den gesamten spalten jetzt die umlaute als ? angezeigt werden.
dann stimmt dein Encoding entweder beim Einlesen oder beim Ausgeben nicht, am Ende von Import-CSV noch ein "Default" dran machen oder dein benutztes Encoding angeben, sollte helfen
Mögliche Werte:
Unicode | UTF7 | UTF8 | ASCII | UTF32 | BigEndianUnicode | Default | OEM
$csv = Import-CSV 'c:\Datei.csv' -delimiter ';' -Encoding Default
https://technet.microsoft.com/de-de/library/hh849891.aspx
Gruß grexit
$csv = Import-CSV 'c:\Datei.csv' -delimiter ';' -Encoding Default
$csv | add-member -MemberType NoteProperty -Name 'Lagerstand beachten' -Value 'Y' -Force
$csv | add-member -MemberType NoteProperty -Name 'Neue Spalte' -Value '' -Force
$csv | %{
$_.'NameDerSpalte' = $_.'Spalte2' + " " + $_.'Spalte3' + " " + $_.'Spalte4'
$_.'Neue Spalte' = $_.'Artikelnummer'
}
$csv | Export-CSV 'c:\Datei-fertig.csv' -NoType -delimiter ';' -Encoding Default
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.
- Schau dir mal meinen Code doch nochmal genau an ... der stimmt so nicht, vor allem die Klammersetzung !
- Zeile 4 ist außerhalb der For-Schleife, das kann so natürlich nicht funktionieren.
- der erste Buchstabe ist immer der Index 0 !
Alternativ kann man auch mit
$_.'Neue Spalte' = $_.'ArtNo'.Substring(0,1)
Und nicht vergessen die neue Spalte auch zu erzeugen siehe meinen Code..
also:
$csv = Import-CSV 'Z:\auto_download_list\wave_list.csv' -delimiter `t -Encoding Default
$csv | add-member -MemberType NoteProperty -Name 'Neuer_Artikelname' -Value '' -Force
$csv | add-member -MemberType NoteProperty -Name 'Neue Spalte' -Value '' -Force
$csv | %{
$_.'Neuer_Artikelname' = $_.'Manufacturer' + " " + $_.'Name' + " " + $_.'Addition'
$_.'Neue Spalte' = $_.'ArtNo'
}
$csv | Export-CSV 'Z:\auto_download_list\wave_list_mit_lehrer_spalte_Artikelname_NEU.csv' -NoType -delimiter ';' -Encoding Default
Sorry, aber mit dieser Materie kenne ich mich so gut wie gar nicht aus...
Dafür habe ich dir ja die Lernen-Links gepostet, wenn du mehr damit machen willst.