Jump to content

Mehrere .csv Dateien mit Powershell bearbeiten uns speichern


Direkt zur Lösung Gelöst von BOfH_666,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

vor 1 Minute schrieb jschmidt:

und tritt nur bei dem Datensatz mit dem Komma in der Datenzelle auf

 

OK, und wenn Du diesen einen Datensatz manuell änderst, dann geht es? Ich würde dringend empfehlen, mich mit dem Anbieter in Verbindung zu setzen. Es wäre deutlich besser, diesen Fehler "an der Wurzel" zu beseitigen, als aufwändig an den Symptomen rumzudoktor'n. ;-)   Wenn Du unbedingt willst, kannst Du selbstverständlich die CSV-Dateien mit PowerShell importieren und sie dann mit einem anderen Delimiter wieder exportieren.

Link zu diesem Kommentar
vor 26 Minuten schrieb jschmidt:

Wie könnt ich das denn in mein Skript mit einbauen?

 

Du importierst die CSV-Datei mit Import-Csv und speicherst das Ergebnis in einer Variablen - genau wie Du es mit Get-Content machst. Dann exportierst Du die Daten wieder mit Export-Csv und gibst einen passenden Delimiter mit dem Parameter -Delimiter an. Das solltest Du natürlich vor dem Entfernen der Header-Zeile machen. ;-) 

Link zu diesem Kommentar

Moin,

 

vor 29 Minuten schrieb jschmidt:

Wie könnt ich das denn in mein Skript mit einbauen?

du liest die Datei als CSV in PowerShell ein und speicherst sie in korrigierter Form wieder ab. Da könntest du jetzt zweierlei versuchen:

  1. die Daten unverändert lassen und die CSV-Datei mit einem Semikolon als Trenner speichern (oder Tab, je nachdem, was in den Daten nicht vorkommt)
  2. die Daten korrigieren, also alle Kommas in den Daten durch "irgendwas" ersetzen, und das CSV wieder mit dem Komma als Trenner speichern

Du siehst schon - das läuft auf Gebastel raus und der nächste Importfehler ist nicht weit.

 

Gruß, Nils

 

Link zu diesem Kommentar

Super vielen Dank schonmal für die Hilfe! 

Könnt ihr nochmal drüber schauen, ob das was ich gemacht habe soweit passt? Nicht dass ich irgendwo einen Denkfehler drin hab. Soweit funktioniert es jetzt aber...

$folder_csv = 'C:\Install\Impfschrank\Import'
$backupfolder = 'C:\Install\Impfschrank\Import\Backup'
$importfolder ='C:\Install\Impfschrank\Import\Import-enaio\'

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) {
    $csv = Import-Csv $file.FullName 
    $csv | Export-Csv -Delimiter ';' -NoTypeInformation $importfolder$file
}

Remove-Item $folder_csv\*.csv

$fileList2 = Get-ChildItem -Path $importfolder -Filter *.csv -File

foreach ($file in $fileList2) {
    $NewContent = Get-Content $file.FullName | Select-Object -Skip 1
    $NewContent | Out-File -FilePath $file.FullName -Force -Encoding Default 
}

 

Link zu diesem Kommentar
vor 58 Minuten schrieb jschmidt:

Soweit funktioniert es jetzt aber...

Na das ist doch die Hauptsache.  ;-) :thumb1:

 

Wenn Du das Ganze etwas strukturierter angehst, ist es leichter verständlich und der Code leichter zu pflegen falls nötig. Probier ma das hier!

 

$folder_csv = 'C:\Install\Impfschrank\Import'
$backupfolder = 'C:\Install\Impfschrank\Import\Backup'
$importfolder = 'C:\Install\Impfschrank\Import\Import-enaio'

$fileList = Get-ChildItem -Path $folder_csv -Filter *.csv -File

foreach ($file in $fileList) {
    Copy-Item -Path $file.FullName -Destination $backupfolder
    $OutputFileName = Join-Path -Path $importfolder -ChildPath $file.Name 
    $csv = Import-Csv $file.FullName
    $Csv | 
        ConvertTo-Csv -Delimiter ';' | 
            Select-Object -Skip 1 | 
                Out-File -FilePath $OutputFileName
}

 

Aus Sicht der Skriptes ist der Import-Folder zwar der Output-Folder aber ich hab jetzt einfach mal Deine Variablennamen übernommen.

bearbeitet von BOfH_666
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...