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-ID: 176853

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

Ausgedruckt am: 23.11.2024 um 05:11 Uhr

60730
60730 25.11.2011 um 21:35:23 Uhr
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ß
bastla
bastla 25.11.2011 um 22:03:20 Uhr
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
FlashGordon
FlashGordon 26.11.2011 um 02:01:25 Uhr
Goto Top
Schon mal super! Danke!
Vielleicht sollte ich ergänzen dass in Feld 3 ein Umlaut, oder ein ß stehen darf/kann.
Biber
Biber 01.12.2011 um 19:45:16 Uhr
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
FlashGordon
FlashGordon 01.12.2011 um 20:30:37 Uhr
Goto Top
Naja...ich könnte sagen dass ich das irgendwie nicht zum laufen bekomme. face-sad
Biber
Biber 01.12.2011 um 20:34:05 Uhr
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