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
Please also mark the comments that contributed to the solution of the article
Content-Key: 333947
Url: https://administrator.de/contentid/333947
Printed on: April 26, 2024 at 00:04 o'clock
7 Comments
Latest comment
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.