jschmidt 0 Geschrieben 21. März 2022 Melden Teilen Geschrieben 21. März 2022 (bearbeitet) Leider bin ich nicht Erfahren genug mit Powershell und finde im Internet auch keinen passenden Beitrag... Ich muss von einem sFTP Server mehrmals täglich CSV Dateien abrufen (funktioniert bereits) und bearbeiten, damit ein anderes Programm diese dann wieder importieren kann. Dazu muss immer die erste Zeile gelöscht werden. Mit einer einzelnen Datei hab ich das auch schon hinbekommen... $import = get-content 'C:\Install\User.csv' $import | Select-Object -Skip 1 | Set-Content 'C:\Install\user.csv' Die heruntergeladenen Dateien haben immer unterschiedliche Namen und sollten dann auch noch in ein Backup-Verzeichnis kopiert werden (vor der Verarbeitung). Leider bekomme ich die Schleife nicht gebaut um jede CSV in diesem Verzeichnis zu bearbeiten. Vielen Dank schonmal für die Hilfe Lieben Gruß Johannes bearbeitet 21. März 2022 von jschmidt Zitieren Link zu diesem Kommentar
cj_berlin 1.313 Geschrieben 21. März 2022 Melden Teilen Geschrieben 21. März 2022 (bearbeitet) vor 28 Minuten schrieb jschmidt: Leider bekomme ich die Schleife nicht gebaut um jede CSV in diesem Verzeichnis zu bearbeiten. Was hast Du denn schon versucht? EDIT: Und bitte Code als Code posten! bearbeitet 21. März 2022 von cj_berlin Zitieren Link zu diesem Kommentar
jschmidt 0 Geschrieben 21. März 2022 Autor Melden Teilen Geschrieben 21. März 2022 vor 2 Minuten schrieb cj_berlin: Was hast Du denn schon versucht? EDIT: Und bitte Code als Code posten! $folder_csv = 'C:\Install\Import' $folder_fileout = 'C:\Install\Import-enaio' $files = Get-ChildItem $folder_csv -File -Filter *.csv foreach ($file in $files) { $name = $(ls) $data = Import-csv $($file.Fullname) -Delimiter "," $data | Select-Object -Skip 1 $data | export-csv "$folder_fileout\$name.csv" -delimiter "," -Encoding default } Das habe ich versucht und viele Schritte dazwischen, es kann gut sein, dass ich es verschlimmbessert hab Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 21. März 2022 Melden Teilen Geschrieben 21. März 2022 Willst Du jeweils die Header-Zeile entfernen oder die erste Daten-Zeile? In dem Beispiel in Deinem ersten Beitrag wird Get-Content bentutz und Du benutzt scheinbar Import-Csv. Das hat - wie zu erwarten - unterschiedliche Ergebnisse zur Folge! Zitieren Link zu diesem Kommentar
jschmidt 0 Geschrieben 21. März 2022 Autor Melden Teilen Geschrieben 21. März 2022 vor 1 Minute schrieb BOfH_666: Willst Du jeweils die Header-Zeile entfernen oder die erste Daten-Zeile? In dem Beispiel in Deinem ersten Beitrag wird Get-Content bentutz und Du benutzt scheinbar Import-Csv. Das hat - wie zu erwarten - unterschiedliche Ergebnisse zur Folge! Es soll die Header-Zeile entfernt werden... Mit get-Content hab ich es leider in der Schleife auch nicht hinbekommen, deshalb hab ich rumgespielt Ich bin mir nichtmal sicher, ob das noch irgendeinen Sinn hat was ich gebastelt habe Zitieren Link zu diesem Kommentar
Beste Lösung BOfH_666 577 Geschrieben 21. März 2022 Beste Lösung Melden Teilen Geschrieben 21. März 2022 Im einfaschte Fall sollte es das hier bringen: $folder_csv = 'C:\Install\Import' $fileList = Get-ChildItem -Path $folder_csv -Filter *.csv -File foreach ($file in $fileList) { $NewContent = Get-Content $file.FullName | Select-Object -Skip 1 $NewContent | Out-File -FilePath $file.FullName -Force } Zitieren Link zu diesem Kommentar
jschmidt 0 Geschrieben 21. März 2022 Autor Melden Teilen Geschrieben 21. März 2022 vor 56 Minuten schrieb BOfH_666: Im einfaschte Fall sollte es das hier bringen: $folder_csv = 'C:\Install\Import' $fileList = Get-ChildItem -Path $folder_csv -Filter *.csv -File foreach ($file in $fileList) { $NewContent = Get-Content $file.FullName | Select-Object -Skip 1 $NewContent | Out-File -FilePath $file.FullName -Force } Super vielen Dank, hat super funktioniert Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 21. März 2022 Melden Teilen Geschrieben 21. März 2022 Nur zur Info: Es ist nicht nötig, jedes Mal den kompletten Beitrag, auf den Du antwortest, zu zitieren. Wenn Du Dich nicht auf etwas Spezifisches aus dem Beitrag beziehen willst, lass das Zitat einfach weg. Zitieren Link zu diesem Kommentar
jschmidt 0 Geschrieben 22. März 2022 Autor Melden Teilen Geschrieben 22. März 2022 Jetzt hat sich leider noch ein weiteres Problem ergeben, die Dateien die wir erhalten sind mit "," getrennt und leider gibt es natürlich in der Dateneingabe auch Kommas . Mit einem - replace in der Schleife habe ich es leider nicht hinbekommen und auch eine separate foreach Schleife hat nicht funktioniert... So Sieht mein Skript aktuell aus: $folder_csv = 'C:\Install\Impfschrank\Import' $backupfolder = 'C:\Install\Impfschrank\Import\Backup' Copy-Item -Path C:\Install\Impfschrank\Import\*csv -Destination $backupfolder -Exclude C:\Install\Impfschrank\Import $fileList = Get-ChildItem -Path $folder_csv -Filter *.csv -File foreach ($file in $fileList) { $NewContent = Get-Content $file.FullName | Select-Object -Skip 1 $NewContent | Out-File -FilePath $file.FullName -Force -Encoding default } Kann man die enthaltenen Kommas entfernen oder sogar auf ein anderes Trennzeichen umstellen? vor 16 Stunden schrieb BOfH_666: Nur zur Info: Es ist nicht nötig, jedes Mal den kompletten Beitrag, auf den Du antwortest, zu zitieren. Wenn Du Dich nicht auf etwas Spezifisches aus dem Beitrag beziehen willst, lass das Zitat einfach weg. Kuck ich bin lernfähig Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. März 2022 Melden Teilen Geschrieben 22. März 2022 vor 1 Minute schrieb jschmidt: leider gibt es natürlich in der Dateneingabe auch Kommas ?? Du sprichst in Rätseln. Meinst Du damit, dass die Datenzellen Kommata enthalten? Das sollte bei einer standard-konformen CSV-Datei kein Problem sein, da die Daten in den Zellen in Anführungszeichen eingeschlossen sind. ... oder etwa nicht? Zitieren Link zu diesem Kommentar
cj_berlin 1.313 Geschrieben 22. März 2022 Melden Teilen Geschrieben 22. März 2022 (bearbeitet) vor 6 Minuten schrieb jschmidt: Jetzt hat sich leider noch ein weiteres Problem ergeben, die Dateien die wir erhalten sind mit "," getrennt und leider gibt es natürlich in der Dateneingabe auch Kommas . Das ist nicht schlimm. Die CSV-Spezifikation schreibt es vor, dass Werte, die den Delimiter enthalten, in Anführungszeichen genommen werden müssen. PowerShell ist da noch rigoroser und setzt alle nicht-numerischen Werte in Anführungszeichen. bearbeitet 22. März 2022 von cj_berlin 1 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. März 2022 Melden Teilen Geschrieben 22. März 2022 vor 5 Minuten schrieb jschmidt: Kann man die enthaltenen Kommas entfernen oder sogar auf ein anderes Trennzeichen umstellen? Prinzipiell schon aber das sollte nicht nötig sein. Zitieren Link zu diesem Kommentar
jschmidt 0 Geschrieben 22. März 2022 Autor Melden Teilen Geschrieben 22. März 2022 Ja es ist alles in Anführungszeichen aber mein Programm, welches die Dateien dann importiert beschwert sich es wären zu viele Spalten... Da interessieren die " wohl nicht So steht es in der csv: ,"Herr","Christoph, Dr.", Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. März 2022 Melden Teilen Geschrieben 22. März 2022 vor 4 Minuten schrieb jschmidt: mein Programm, welches die Dateien dann importiert beschwert sich es wären zu viele Spalten Kann es sein, dass Du die Fehlermeldung miss-interpretierst? Darf man fragen, welches Programm das ist? Kannst Du die Fehlermeldung posten? Kannst Du einen einzelnen Datensatz so anpassen, dass Dein Programm ihn ohne Fehler importiert? Liegt es wirklich an den Kommata in den Daten-Zellen? Wenn ja, solltest Du Dich dringend mit dem Anbieter Deines Programms auseinandersetzen. Zitieren Link zu diesem Kommentar
jschmidt 0 Geschrieben 22. März 2022 Autor Melden Teilen Geschrieben 22. März 2022 Es handelt sich um Enaio, ein DMS... die Fehlermeldung lautet "Der Datensatz 8 enthält zu viele Feldwerte. (-983432381), Der Import ist fehlgeschlagen: " und tritt nur bei dem Datensatz mit dem Komma in der Datenzelle auf... alle anderen Datensätze können importiert werden Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.