42687
Goto Top

Per Batch CSV Auslesen - Eintrag vorgegeben zugehöriges herausfinden

Hallo,
ich habe eine fullname.csv.
Die Fullname.csv sieht folgendermaßen aus.
1. Spalte 2. Spalte 3. Spalte 4. Spalte
Benutzername Vorname Nachname Fullname
kkulp karl kulp karl kulp

Die Schüler geben nun bei sich den Benutzernamen, zB. KKulp ein.
Nun soll die Batch von Karl die dazugehörigen 3 anderen Spalten suchen und als variable eintragen.
Also von Karl soll er den Vornamen, Nachnamen und den Fullnamen herausfinden.
%vorname% = karl
%nachname% = kulp
%fullname% = karl kulp

Wie kann ich das machen, vielen Dank. Willi

Content-Key: 108334

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

Printed on: April 24, 2024 at 00:04 o'clock

Member: bastla
bastla Feb 07, 2009 at 13:45:40 (UTC)
Goto Top
Hallo Peter161!
Die Schüler geben nun bei sich den Benutzernamen, zB. Karl ein.
Ich hätte angenommen, in Deinem Beispiel wäre der Benutzername "kkulp" und gehe daher von einer Eingabe "kkulp" aus.

Weitere Annahme (mangels Info): Als Trennzeichen in der "fullname.csv" wird ein Semikolon verwendet.

Ansonsten: In welchem Umfeld soll das Ganze denn laufen (weil anstelle der Eingabe ein Auslesen von %username% weniger aufwändig und fehleranfällig wäre)?

Anyhow:
@echo off & setlocal
set "Namensliste=D:\fullname.csv"  
set "Delim=;"  

set /p Eingabe=Benutzername: 
if not defined Eingabe (echo Es wurde kein Benutzername eingegeben! & pause & goto :eof)

set benutzername=
for /f "tokens=1-4 delims=%Delim%" %%a in ('findstr /b /i /c:"%Eingabe%%Delim%" "%Namensliste%"') do (  
    set "benutzername=%%a"  
    set "vorname=%%b"  
    set "nachname=%%c"  
    set "fullname=%%d"  
)
if not defined benutzername (echo Der Benutzername "%Eingabe%" wurde nicht gefunden! & pause & goto :eof)  
echo %benutzername%_%vorname%_%nachname%_%fullname%
Grüße
bastla

[Edit]
@Biber: Darf ich auf "fast stillschweigend" und "einigermaßen gutwillig" korrigieren? face-wink
Im übrigen: Pepsi auch nur als "Semikola" zu bezeichnen benötigt aber auch ein ordentliches Maß an gutem Willen ... face-wink
[/Edit]
Member: Biber
Biber Feb 07, 2009 at 13:49:39 (UTC)
Goto Top
Moin Peter161,

eine CSV-Datei heißt CSV-Datei, weil sie comma-seperated values, einzelne Werte durch Kommata getrennt, enthält.
Oder eben das, was die Redmonder PraktikantInnen für Kommata gehalten haben - nach heutigen Erkenntnissen waren es Semikola.
(Wahrscheinlich waren aber die Begriffe "Semikola" durch Pepsi und "SSV" durch Karstadt urheberrechtlich geschützt).

Anyhow:
  • in Deiner Text-Export-Datei sind die Felder nicht erkennbar durch ein Komma, ein Semikolon oder ein TAB-Zeichen getrennt.
  • Somit gäbe es kein eindeutiges Aufdröselungsverfahren (IT-Slang: "Algorithmus"), um die im Beispiel fünf Werte "kkulp karl kulp karl kulp" auf 4 Variablen abzubilden

Deshalb die Rückfragen:
  • Wie sind denn nun die 4 "logischen" Felder getrennt? TABs?
  • oder ist es eine Datei mit fester Satzlänge? Dann musst Du uns die Länge der der einzelnen Felder sagen
  • und dieses hier "Die Schüler geben nun bei sich den Benutzernamen, zB. Karl ein" müssen wir als "geben den Benutzernamen, zB kkarl ein" interpretieren, oder?

Grüße
Biber
[Edit] Moin bastla,
wie sollen die Jungs und Mädels denn lernen, ihre Anforderungen sauber zu formulieren, wenn Du das Gestammel stillschweigend und gutwillig übersetzt? face-wink
[/Edit]
Mitglied: 42687
42687 Feb 07, 2009 at 14:51:18 (UTC)
Goto Top
Also, erst mal vielen Dank.
Ich habe mich leider einmal beim Benutzername vertippt.
Ich hatte mich bis jetzt leider noch nicht mit csv beschäftigt und wusste nicht, dass ich das trennzeichen angeben muss, denn im excel wir das trennzeichen nicht angezeigt. Vielen Dank. bb willi
Mitglied: 42687
42687 Feb 09, 2009 at 14:01:59 (UTC)
Goto Top
Hallo, nochmal ne erweiterte Frage, geht es auch, dass wenn der Eintrag gefunden wurde, die komplette Spalte gelöscht wird? danke Willi.
Member: Biber
Biber Feb 09, 2009 at 17:39:07 (UTC)
Goto Top
Zitat von @42687:
Hallo, nochmal ne erweiterte Frage, geht es auch, dass wenn der
Eintrag gefunden wurde, die komplette Spalte gelöscht wird?
danke Willi.
Moin Peter161,

a) bist Du sicher, dass Du "Spalte" meinst? "Spalte" ist das zwischen zwei Delimitern...
b) wenn ja: was sollte das für einen Sinn machen? User gibt sein "kkarl" ein, damit das Feld "kkarl" aus deieser Zeile gelöscht wird?

Bitte zeig doch mal bei dieser Datei VORHER:
kkulp; karl; kulp; karl kulp;
hdampf;hans;dampf;hans dampf;
... wie die Datei NACHHER aussiert, wenn der Suchbegriff/der Aufrufparameter "hdampf" lautet.

Grüße
Biber
Mitglied: 42687
42687 Feb 09, 2009 at 19:27:47 (UTC)
Goto Top
Es tut mir so leid, ich war etwas in Stess und habe Spalte und Zeile verwechselt, Zeile meinte ich, wie mache ich das? bb willi
Member: Biber
Biber Feb 09, 2009 at 22:20:50 (UTC)
Goto Top
Moin Peter161,

ich war etwas in Stess
Wo liegt datt denn? Ruhrpott?

Aber wenn Du jetzt wieder zurück bist, machen wir einfach weiter...

Wenn Du einzelne ZEILEN (diese waagerechten Dinger) aus einer einfachen Text-Datei entfernen oder besser wegfiltern willst, geht es ganz simpel mit dem FIND- oder dem FINDSTR-Utilitiy.
Beide sind auf Deinem/jedem halbwegs aktuellen Windowsrechner; FindStr.exe ist die ein wenig facegeliftete Variante.

Beispiel
FindStr /v "DieZeileMitDiesemSuchtextSollweg" meinerTextdatei.txt  
- filtert alle Zeilen mit genau diesem TextString aus der angegebenen Textdatei.
---> viel mehr Möglichkeiten unter "FindStr /?" am Cmd-Prompt

--> Dieses gefilterte Ergebis kannst Du statt auf den Bildschirm auch in eine neue Datei umlenken NACH DEM TESTEN!!!
FindStr /v "DieZeileMitDiesemSuchtextSollweg" DeineTextdatei.txt >%temp%\gefilterteDatei.txt  
-- wenn Du durch Testen geprüft hast, dass Du an alles gedacht hast:
Copy /y %temp%\gefilterteDatei.txt DeineTextdatei.txt

Grüße
Biber