Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per Batch CSV Auslesen - Eintrag vorgegeben zugehöriges herausfinden

Frage Entwicklung Batch & Shell

Mitglied: Peter161

Peter161 (Level 1) - Jetzt verbinden

07.02.2009, aktualisiert 15:39 Uhr, 13670 Aufrufe, 7 Kommentare

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
Mitglied: bastla
07.02.2009 um 14:45 Uhr
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:
01.
@echo off & setlocal 
02.
set "Namensliste=D:\fullname.csv" 
03.
set "Delim=;" 
04.
 
05.
set /p Eingabe=Benutzername:  
06.
if not defined Eingabe (echo Es wurde kein Benutzername eingegeben! & pause & goto :eof) 
07.
 
08.
set benutzername= 
09.
for /f "tokens=1-4 delims=%Delim%" %%a in ('findstr /b /i /c:"%Eingabe%%Delim%" "%Namensliste%"') do ( 
10.
    set "benutzername=%%a" 
11.
    set "vorname=%%b" 
12.
    set "nachname=%%c" 
13.
    set "fullname=%%d" 
14.
15.
if not defined benutzername (echo Der Benutzername "%Eingabe%" wurde nicht gefunden! & pause & goto :eof) 
16.
echo %benutzername%_%vorname%_%nachname%_%fullname%
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]
Bitte warten ..
Mitglied: Biber
07.02.2009 um 14:49 Uhr
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?
[/Edit]
Bitte warten ..
Mitglied: Peter161
07.02.2009 um 15:51 Uhr
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
Bitte warten ..
Mitglied: Peter161
09.02.2009 um 15:01 Uhr
Hallo, nochmal ne erweiterte Frage, geht es auch, dass wenn der Eintrag gefunden wurde, die komplette Spalte gelöscht wird? danke Willi.
Bitte warten ..
Mitglied: Biber
09.02.2009 um 18:39 Uhr
Zitat von Peter161:
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
Bitte warten ..
Mitglied: Peter161
09.02.2009 um 20:27 Uhr
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
Bitte warten ..
Mitglied: Biber
09.02.2009 um 23:20 Uhr
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
01.
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!!!
01.
FindStr /v "DieZeileMitDiesemSuchtextSollweg" DeineTextdatei.txt >%temp%\gefilterteDatei.txt 
02.
-- wenn Du durch Testen geprüft hast, dass Du an alles gedacht hast: 
03.
Copy /y %temp%\gefilterteDatei.txt DeineTextdatei.txt
Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...