freshman2017
Goto Top

BATCH Zieldatei nach Shell-Befehl leer?

Hallo,

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

Content-Key: 333947

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

Printed on: April 25, 2024 at 03:04 o'clock

Mitglied: 132692
132692 Apr 02, 2017, updated at Apr 03, 2017 at 06:53:02 (UTC)
Goto Top
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.
Member: freshman2017
freshman2017 Apr 03, 2017 at 07:04:58 (UTC)
Goto Top
Hi,
super danke für dein Tipp, der Vergleich hier kann nicht funktionieren, da hast Du recht. Es sind hier nur Beispieldateien.

powershell -Command "Import-Csv quelle.csv -Encoding Default | sort NR1 -Descending | Export-csv -Path ziel.csv -Encoding Default -NoTypeInformation"  

Damit das mit der Tilde klappt, wo muss "%%~a" in der PowerShell eingetragen werden, damit keine Anführungszeichen gesetzt werden?

Gruß, freshman2017
Mitglied: 132692
132692 Apr 03, 2017 updated at 09:51:41 (UTC)
Goto Top
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:
powershell -Command "(Import-Csv quelle.csv -Encoding Default | sort NR1 -Descending | ConvertTo-CSV -NoType) -Replace '\"','' | sc ziel.csv"  
Member: freshman2017
freshman2017 Apr 03, 2017 at 08:20:42 (UTC)
Goto Top
Zitat von @132692:
powershell -Command "(Import-Csv quelle.csv -Encoding Default | sort NR1 -Descending | ConvertTo-CSV) -Replace '"','' | sc ziel.csv"  

Leider wird bei mir ein Fehler beim Ausführen der Datei angezeigt, dass SC ist ein Befehlszeilenprogramm für... Fehler: "Unbekannter Fehler"
Woran kann das liegen?
Mitglied: 132692
132692 Apr 03, 2017 updated at 08:35:42 (UTC)
Goto Top
Tipp:Anführungszeichen escapen ... den Fehler hab ich dir extra eingebaut, den lass ich dir mal als Hausaufgabe face-smile sonst machst du hier ja nur copy n paste.
Member: freshman2017
freshman2017 Apr 03, 2017 at 09:34:01 (UTC)
Goto Top
Zitat von @132692:

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

powershell -Command "(Import-Csv quelle.csv -Encoding Default | sort NR1 -Descending | ConvertTo-CSV) -Replace "," | sc ziel.csv"  

So dürfte es korrekt sein?
Mitglied: 132692
Solution 132692 Apr 03, 2017 updated at 09:52:15 (UTC)
Goto Top
Nope, du kannst nicht einfach einen Parameter bei Replace weglassen..., 2 tries left face-wink
Tipp: \

Naja, sind wir mal nicht so, ist oben korrekt angepasst.