Ü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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 307064
Url: https://administrator.de/contentid/307064
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
8 Kommentare
Neuester Kommentar
[OT]
Moin vcdwelt,
auch wenn der Beitrag schon als "gelöst" makiert ist....
Könntest du bitte den Titel
Wäre nett ggü. den Suchmaschinen-BenutzerInnen, die ein ähnliches Problem haben.
Danke
Biber
[/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]
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:
Ich habe schon einiges probiert, stehe aber auf dem Schlauch...
Nachtrag: Es soll in der 2. Spalte no, low, yes ersetzt werden...
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!
))
Nachtrag: Es soll in der 2. Spalte no, low, yes ersetzt werden...
Servus,
lass den Quatsch mit dem "Batch replace" sein, das lässt sich viel eleganter direkt im Powershell-Teil abfackeln...
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
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"
Gruß @colinardo
P.s. das nächste mal bitte keine fremden Threads mehr kapern! Danke!
Diskussionsrichtlinien - die Regeln zu unseren Inhalten
Zitat von @colinardo:
Servus,
lass den Quatsch mit dem "Batch replace" sein, das lässt sich viel eleganter direkt im Powershell-Teil abfackeln...
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!
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"
Gruß @colinardo
P.s. das nächste mal bitte keine fremden Threads mehr kapern! Danke!
Wahnsinn! Danke schön!!!!
You're welcome 🤙