flashgordon
Goto Top

Bestimmtes Feld einer csv mittels batch prüfen

Hallo zusammen,
ich habe schon mit dem mir zur Verfügung stehenden Wissen versucht nach einer gewissen Anzahl an Zeichen zu suchen und zu prüfen, allerdings ohne Erfolg.

Ich habe eine CSV die ich mittels Batch "prüfen" möchte.
In der ersten Zeile der CSV befindet sich die Überschrift:

Feld1;Feld2;Feld3
Feld1;Feld2;Feld3
AANTONE12;Bla;Blub
HSTÜTT27;Tim;Struppi
ZCLEAN31;Ad;Vent


Die benötigte Batch Datei soll 2 Dinge prüfen:

1. Ob in Feld 1 ein Umlaut, oder "ß" enthalten ist
2. Ob der Wert in Feld 1 länger als 8 Zeichen ist

Wenn eine der beiden Bedingungen erfüllt ist soll der "schuldige" Wert aus Feld 1 in eine log.txt geschrieben werden.
Ansonsten NIX.


Wäre toll wenn hier jemand ne Idee hat.

Danke euch vorab.

Gruß

Content-Key: 176853

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

Printed on: April 23, 2024 at 18:04 o'clock

Mitglied: 60730
60730 Nov 25, 2011 at 20:35:23 (UTC)
Goto Top
moin,

dann entwickeln wir das mal...

  • irgendwas komplett gleich immer wieder abarbeiten - dazu nimmt man eine Schleife - die via for aufgebaut wird.
dazu findest du hier ein ganz gutes Tutorial

1. Ob in Feld 1 ein Umlaut, oder "ß" enthalten ist
  • das ist auch einfach...
C:\>echo ß |findstr /i "ä ö ü ß" && echo jupp
ß
jupp
C:\>

Das mag jetzt zwar komplex sein und es gibt auch kein großes ß, aber die Mimik wirst du hier schon oft gefunden haben.

2. Ob der Wert in Feld 1 länger als 8 Zeichen ist
Da hilft die set /? weiter...

C:\>set "wert=123456789"
C:\>if not "%wert:~8,1%" == "" echo yupp
yupp
C:\>set "wert=abcdefgh"
C:\>if not "%wert:~8,1%" == "" echo yupp
C:\>

Ich halte eher mehr davon, nur Tipps und Anstöße zu geben, obwohl die meistens schwerer zu formulieren sind, als komplette Batche - aber es geht ja darum, das du das verstehst.

Gruß
Member: bastla
bastla Nov 25, 2011 at 21:03:20 (UTC)
Goto Top
@t-mo

Machmal genügt aber das Testen ohne Schleife doch nicht - ich hatte die gleiche Idee, aber bei mir tut's das "findstr" (unter XP SP3) nach Deinem Muster nicht; Workaround:
for %%i in (Ä ä Ö ö Ü ü ß) do echo %wert%|find "%%i">nul && echo %wert%
if not "%wert:~8,1%" == "" echo yupp
lässt sich etwas sparsamer auch
if "%wert:~8%" neq "" echo yupp
schreiben ...

Grüße
bastla
Member: FlashGordon
FlashGordon Nov 26, 2011 at 01:01:25 (UTC)
Goto Top
Schon mal super! Danke!
Vielleicht sollte ich ergänzen dass in Feld 3 ein Umlaut, oder ein ß stehen darf/kann.
Member: Biber
Biber Dec 01, 2011 at 18:45:16 (UTC)
Goto Top
Moin Flaps,

Zitat von @FlashGordon:
Schon mal super! Danke!
Vielleicht sollte ich ergänzen dass in Feld 3 ein Umlaut, oder ein ß stehen darf/kann.

Wenn keine weiteren Fragen mehr offen sind, dann könntest du eigentlich noch etwas ergänzen....

Hint: Es ist grün und hängt ziemlich weit oben, ist aber kein Ballonfahrer bei Sturmböen...

Grüße
Biber
Member: FlashGordon
FlashGordon Dec 01, 2011 at 19:30:37 (UTC)
Goto Top
Naja...ich könnte sagen dass ich das irgendwie nicht zum laufen bekomme. face-sad
Member: Biber
Biber Dec 01, 2011 at 19:34:05 (UTC)
Goto Top
Zitat von @FlashGordon:
Naja...ich könnte sagen dass ich das irgendwie nicht zum laufen bekomme. face-sad

Das Grüne jezz' oder wovon reden wir??


[Edit]

21....
22....

So, einen T-Moartigen Hint hätte ich noch.

Demo am CMD-Prompt:
d:\temp>@for %a in (grünes Häkchen) do @for %i in (Ä ä Ö ö Ü ü ß) do @echo %a|find "%i">nul && @echo "%a" enthält Umlaut "%i".
"grünes" enthält Umlaut "ü".
"Häkchen" enthält Umlaut "ä".

[/Edit]

Grüße
Biber