
42687
07.02.2009, aktualisiert um 15:39:23 Uhr
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 108334
Url: https://administrator.de/forum/per-batch-csv-auslesen-eintrag-vorgegeben-zugehoeriges-herausfinden-108334.html
Ausgedruckt am: 30.04.2025 um 06:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo Peter161!
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:
Grüße
bastla
[Edit]
@Biber: Darf ich auf "fast stillschweigend" und "einigermaßen gutwillig" korrigieren?
Im übrigen: Pepsi auch nur als "Semikola" zu bezeichnen benötigt aber auch ein ordentliches Maß an gutem Willen ...
[/Edit]
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%
bastla
[Edit]
@Biber: Darf ich auf "fast stillschweigend" und "einigermaßen gutwillig" korrigieren?
Im übrigen: Pepsi auch nur als "Semikola" zu bezeichnen benötigt aber auch ein ordentliches Maß an gutem Willen ...
[/Edit]
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:
Deshalb die Rückfragen:
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?
[/Edit]
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?
[/Edit]
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,Hallo, nochmal ne erweiterte Frage, geht es auch, dass wenn der
Eintrag gefunden wurde, die komplette Spalte gelöscht wird?
danke Willi.
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;
Grüße
Biber
Moin Peter161,
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
- 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!!!
Grüße
Biber
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
---> 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