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-Key: 307064

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

Printed on: April 16, 2024 at 07:04 o'clock

Member: colinardo
Solution colinardo Jun 14, 2016 updated at 09:45:22 (UTC)
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
Member: vcdwelt
vcdwelt Jun 14, 2016 at 09:23:40 (UTC)
Goto Top
Ok, das sieht jetzt wirklich nicht so schwer aus, damit sollte ich zurecht kommen face-smile

Danke!
Member: Biber
Biber Jun 14, 2016 at 09:58:05 (UTC)
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]
Member: vcdwelt
vcdwelt Jun 14, 2016 at 10:12:20 (UTC)
Goto Top
Habe es mal angepasst face-smile
Member: kay1980
kay1980 May 14, 2022 updated at 21:10:19 (UTC)
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...
Member: colinardo
colinardo May 14, 2022 updated at 23:11:41 (UTC)
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!
Discussion guidelines - The rules for our content
Member: kay1980
kay1980 May 14, 2022 at 23:11:39 (UTC)
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!!!!
Member: colinardo
colinardo May 14, 2022 updated at 23:13:53 (UTC)
Goto Top
Zitat von @kay1980:
Wahnsinn! Danke schön!!!!
You're welcome 🤙