BATCH Zieldatei nach Shell-Befehl leer?
Hallo,
vorhandene .CSV sind wie folgt aus:
Mit nachfolgendem Powershell-Befehl würde ich diese zunächst soriteren:
Wenn ich allerdings nun die ziel.csv mit nachfolgendem Batch weiterarbeiten möchte:
...ist dann die ziel_ad.txt komplett leer. Hat da jemand Ideen? Wenn ich die .csv nicht sortieren lasse, wird die ziel_ad.txt wie gewünscht gefüllt.
Beste Grüße,
freshman2017
vorhandene .CSV sind wie folgt aus:
NR,NR1,NR2,NR3,NAME,VORNAME,PLZ,ORT,STRASSE,DATUM1,DATUM2,ARTIKELNAME,NR4,MENGE, TAXE,TAXE1,BRUTTO,TAXE3,NR5,NR6,NR7,
a,b,c,d,MUSTERMANN,MAX,12345,MUSTERSTADT,MUSTERSTRAßE 1,17.03.2017,16.03.2017,ABC2,12345,12,19,20,23,250.00,123452,23,123,
a,b,c,d,MUSTERMANN,MAX,12345,MUSTERSTADT,MUSTERSTRAßE 1,17.03.2017,16.03.2017,ABC2,12345,12,19,20,23,250.00,123452,23,123,
ab,b,c,d,MUSTERMANN,MAX,12345,MUSTERSTADT,MUSTERSTRAßE 1,17.03.2017,16.03.2017,ABC2,12345,12,19,20,23,250.00,123452,23,123,
ab,b,c,d,MUSTERMANN,MAX,12345,MUSTERSTADT,MUSTERSTRAßE 1,17.03.2017,16.03.2017,ABC2,12345,12,19,20,23,250.00,123452,23,123,
ac,a,c,d,MUSTERMANN,MAX,12345,MUSTERSTADT,MUSTERSTRAßE 1,17.03.2017,16.03.2017,ABC2,12345,12,19,20,23,250.00,123452,23,123,
ac,b,c,d,MUSTERMANN,MAX,12345,MUSTERSTADT,MUSTERSTRAßE 1,17.03.2017,16.03.2017,ABC2,12345,12,19,20,23,250.00,123452,23,123,
a,b,c,d,MUSTERMANN,MAX,12345,MUSTERSTADT,MUSTERSTRAßE 1,17.03.2017,16.03.2017,ABC2,12345,12,19,20,23,250.00,123452,23,123,
ab,c,c,d,MUSTERMANN,MAX,12345,MUSTERSTADT,MUSTERSTRAßE 1,17.03.2017,16.03.2017,ABC2,12345,12,19,20,23,250.00,123452,23,123,
Mit nachfolgendem Powershell-Befehl würde ich diese zunächst soriteren:
powershell -Command "Import-Csv quelle.csv -Encoding Default | sort NR1 -Descending | Export-csv -Path ziel.csv -Encoding Default -NoTypeInformation"
Wenn ich allerdings nun die ziel.csv mit nachfolgendem Batch weiterarbeiten möchte:
@echo off & setlocal
set "quelle=%userprofile%\Desktop\TEST\ziel.csv"
set CURRENTTIME=%TIME::=.%
set CURRENTTIME=%CURRENTTIME:~0,8%
set "ziel=%userprofile%\Desktop\TEST\ziel_ad.txt"
>"%ziel%" (for /f "usebackq skip=1 tokens=1-21 delims=," %%a in ("%quelle%") DO if %%a GTR 0 echo|set /p="%%c;%%f %%e;%%d;%%i;%%g;%%h;")
...ist dann die ziel_ad.txt komplett leer. Hat da jemand Ideen? Wenn ich die .csv nicht sortieren lasse, wird die ziel_ad.txt wie gewünscht gefüllt.
Beste Grüße,
freshman2017
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 333947
Url: https://administrator.de/forum/batch-zieldatei-nach-shell-befehl-leer-333947.html
Ausgedruckt am: 06.04.2025 um 07:04 Uhr
7 Kommentare
Neuester Kommentar

Hi,
erstens werden alle Werte der Spalten beim CSV-Export in der Powershell per Default in Anführungszeichen gesetzt (lässt sich in der Batch mit Verwendung der Tilde %%~a beheben, oder auch in Powershell), dein Vergleich scheitert deswegen und zweitens vergleichst du nach meinem Verständnis in deiner Batch die erste Spalte ob sie größer als eine Zahl(0) ist, in deinem Beispiel sind aber in der ersten Spalte Buchstaben?!
Gruß p.
erstens werden alle Werte der Spalten beim CSV-Export in der Powershell per Default in Anführungszeichen gesetzt (lässt sich in der Batch mit Verwendung der Tilde %%~a beheben, oder auch in Powershell), dein Vergleich scheitert deswegen und zweitens vergleichst du nach meinem Verständnis in deiner Batch die erste Spalte ob sie größer als eine Zahl(0) ist, in deinem Beispiel sind aber in der ersten Spalte Buchstaben?!
Gruß p.

Zitat von @freshman2017:
Damit das mit der Tilde klappt, wo muss "%%~a" in der PowerShell eingetragen werden, damit keine Anführungszeichen gesetzt werden?
Dort musst du es anders machen:Damit das mit der Tilde klappt, wo muss "%%~a" in der PowerShell eingetragen werden, damit keine Anführungszeichen gesetzt werden?
powershell -Command "(Import-Csv quelle.csv -Encoding Default | sort NR1 -Descending | ConvertTo-CSV -NoType) -Replace '\"','' | sc ziel.csv"

Tipp:Anführungszeichen escapen ... den Fehler hab ich dir extra eingebaut, den lass ich dir mal als Hausaufgabe
sonst machst du hier ja nur copy n paste.

Nope, du kannst nicht einfach einen Parameter bei Replace weglassen..., 2 tries left 
Tipp: \
Naja, sind wir mal nicht so, ist oben korrekt angepasst.
Tipp: \
Naja, sind wir mal nicht so, ist oben korrekt angepasst.