vcdwelt
Goto Top

Über eine Batch Datei (oder Konsole) bestimmte Spalten einer CSV Datei entfernen bzw. nur bestimmte Spalten behalten

Hallo,
ich würde gerne per Batch Datei den Inhalt einer CSV Datei bearbeiten.

Ursprüngliche Datei:
Header1;Header2;Header3:Header4;Header5;Header6
Wert1;Wert2;Wert3;Wert4;Wert5;Wert6
Wert11;Wert22;Wert33;Wert44;Wert55;Wert66


Ziel soll sein:
Header1;Header3:Header4;Header6
Wert1;Wert3;Wert4;Wert6
Wert11;Wert33;Wert44;Wert66


Also Beispielsweise die Spalten 2 und 5 komplett zu entfernen (Header und Inhalte).

Hoffe das war jetzt verständlich face-smile

Content-ID: 307064

Url: https://administrator.de/contentid/307064

Ausgedruckt am: 24.11.2024 um 06:11 Uhr

colinardo
Lösung colinardo 14.06.2016 aktualisiert um 11:45:22 Uhr
Goto Top
Hallo vcdwelt,
nichts einfacher als das:
powershell -Executionpolicy ByPass -command "(Import-CSV 'C:\datei.csv' -delimiter ';') | select 'Header1','Header3','Header4','Header6' | export-csv 'C:\datei_export.csv' -delimiter ';' -NoType -Encoding UTF8"  
Grüße Uwe
vcdwelt
vcdwelt 14.06.2016 um 11:23:40 Uhr
Goto Top
Ok, das sieht jetzt wirklich nicht so schwer aus, damit sollte ich zurecht kommen face-smile

Danke!
Biber
Biber 14.06.2016 um 11:58:05 Uhr
Goto Top
[OT]
Moin vcdwelt,

auch wenn der Beitrag schon als "gelöst" makiert ist....
Könntest du bitte den Titel
Über eine Batch Datei bestimmte Zeilen einer CSV Datei entfernen
... etwas an die Fragestellung anpassen, insbesondere vielleicht das Wort "Zeilen" durch "Spalten" ersetzen?

Wäre nett ggü. den Suchmaschinen-BenutzerInnen, die ein ähnliches Problem haben.

Danke
Biber
[/OT]
vcdwelt
vcdwelt 14.06.2016 um 12:12:20 Uhr
Goto Top
Habe es mal angepasst face-smile
kay1980
kay1980 14.05.2022 aktualisiert um 23:10:19 Uhr
Goto Top
Das Script ist wunderbar. Leider wird die csv als Spaltentrenner mit Anführungszeichen ausgegeben.

Meine Code für suchen->ersetzen funktioniert nur ohne Anführungszeichen:

powershell -Executionpolicy ByPass -command "(Import-CSV 'C:\bestand\bestand.csv' -delimiter ';') | select 'Sku','Stock' | export-csv 'C:\bestand\2spalten.csv' -delimiter ';' -NoType -Encoding UTF8"  

@echo off & setlocal enabledelayedexpansion
set "Quelle=C:\bestand\2spalten.csv"  
set "Ziel=C:\bestand\2spalten-import.csv"  
set /a Spalte=2

>"%Ziel%" (for /f "usebackq eol=. delims=" %%z in ("%Quelle%") do (  
    set "ZeileEin=%%z"  
    set "ZeileAus="  
    set /a Feld=1
    for %%a in ("!ZeileEin:;=","!") do (  
        if !Feld!==%Spalte% (
            set "Wert=%%~a"  
            if "%%~a"=="no" set "Wert=0"  
	    if "%%~a"=="low" set "Wert=1"  
	    if "%%~a"=="yes" set "Wert=10"  
            set "ZeileAus=!ZeileAus!;!Wert!"  
        ) else (
            set "ZeileAus=!ZeileAus!;%%~a"  
        )
        set /a Feld+=1
    )
    echo(!ZeileAus:~1!
))
Ich habe schon einiges probiert, stehe aber auf dem Schlauch...

Nachtrag: Es soll in der 2. Spalte no, low, yes ersetzt werden...
colinardo
colinardo 15.05.2022 aktualisiert um 01:11:41 Uhr
Goto Top
Servus,
lass den Quatsch mit dem "Batch replace" sein, das lässt sich viel eleganter direkt im Powershell-Teil abfackeln...
@echo off
powershell -EP ByPass -C "(Import-CSV 'C:\bestand\bestand.csv' -delimiter ';') | select Sku,@{n='Stock';e={switch($_.Stock){'no'{0}'low'{1}'yes'{10}default{$_.Stock}}}} | export-csv 'C:\bestand\2spalten.csv' -delimiter ';' -NoType -Encoding UTF8"  
Das zum Thema warum immer noch mit Batch einen abreißen.

Gruß @colinardo

P.s. das nächste mal bitte keine fremden Threads mehr kapern! Danke!
Diskussionsrichtlinien - die Regeln zu unseren Inhalten
kay1980
kay1980 15.05.2022 um 01:11:39 Uhr
Goto Top
Zitat von @colinardo:

Servus,
lass den Quatsch mit dem "Batch replace" sein, das lässt sich viel eleganter direkt im Powershell-Teil abfackeln...
@echo off
powershell -EP ByPass -C "(Import-CSV 'C:\bestand\bestand.csv' -delimiter ';') | select Sku,@{n='Stock';e={switch($_.Stock){'no'{0}'low'{1}'yes'{10}default{$_.Stock}}}} | export-csv 'C:\bestand\2spalten.csv' -delimiter ';' -NoType -Encoding UTF8"  
Das zum Thema warum immer noch mit Batch einen abreißen.

Gruß @colinardo

P.s. das nächste mal bitte keine fremden Threads mehr kapern! Danke!

Wahnsinn! Danke schön!!!!
colinardo
colinardo 15.05.2022 aktualisiert um 01:13:53 Uhr
Goto Top
Zitat von @kay1980:
Wahnsinn! Danke schön!!!!
You're welcome 🤙