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

Bestimmte Teil einer CSV auslesen

Frage Entwicklung Batch & Shell

Mitglied: Sep-Karl

Sep-Karl (Level 1) - Jetzt verbinden

06.06.2011 um 08:29 Uhr, 2513 Aufrufe, 8 Kommentare

Guten Morgen,

ich habe eine CSV-Datei - raumliste.csv

die Datei sieht folgendermaßen aus:

IP-Adresse;Raumname;
10.50.126.1;H26;
10.48.103.1;E103;
10.50.119.1;H19;
etc.

Ich habe ein Variable %raum% in der z.B. "50.126" oder "48.103" steht.

Jetzt soll mein Batchscsript anhand der Informationen (der beiden mittleren Zahlen der IP) den zugehörigen Raumnamen ausgeben.
Mitglied: Skyemugen
06.06.2011 um 08:44 Uhr
Aloha,

na das lässt sich doch ganz simpel per Schleife und findstr realisieren: (siehe Beispiel)

01.
@echo off & setlocal 
02.
set "datei=test.csv" 
03.
set "raum=50.126" 
04.
for /f "tokens=2 delims=;" %%s in ('findstr /c:".%raum%." "%datei%"') do echo %%s 
05.
pause 
06.
goto :eof
greetz André

edit: Nachbesserung à la Friemlers Einwand
Bitte warten ..
Mitglied: Friemler
06.06.2011 um 09:09 Uhr
Hallo Skyemugen,

da würde ich aber lieber
for /f "tokens=2 delims=;" %%s in ('findstr /c:".%raum%." "%datei%"') do echo %%s
nehmen. Sonst findet er z.B. auch 150.126

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
06.06.2011 um 09:37 Uhr
Aloha Friemler,

jo, das Thema mit dem der findest sonst auch fiel mir im Nachhinein auch noch ein aber erstmal war Frühstückspause, das war wichtiger ^_^

greetz André
Bitte warten ..
Mitglied: Sep-Karl
06.06.2011 um 09:42 Uhr
Hallo,

vielen Dank, das hat mir schon sehr geholfen, es funktioniert so.

Kann mir jetzt jemand vllt. noch erklären, was die einzelnen Befehle machen, damit ich euch das nächste mal nicht wieder wegen solcher Kleinigkeiten belästigen muss...

und warum muss das ganze in eine "FOR-Schleife" ?

ist das "goto :eof" nötig ?? und was bedeuted ":eof" müsste das nicht erst irgendwo definiert sein ??

vielen Dank
Bitte warten ..
Mitglied: Skyemugen
06.06.2011 um 09:57 Uhr
Aloha,

klar, es wirkt erst einmal seltsam eine Schleife für eine Einzelheit zu nutzen aber die for /f-Nutzung bringt eben das mit, was du forderst: Eine Zerlegung des Inhaltes mit abgegrenzter Ausgabe - dazu haben wir ein schönes Tutorial zur FOR-Schleife aber um dich nicht erst damit wegzuschicken, erkläre ich es dir:

Da die CSV glücklicherweise in Semikola unterteilt ist und du den Wert der zweiten Spalte haben willst, nutzt man ganz einfach das Trennzeichen ;, welches per delims= definiert wird und setzt dazu die Ausgabe des zweiten Bereiches auch Token genannt tokens=2 (und da hier nur ein token angegeben wird, wird auch die angegebene Variable %%s genutzt, bei tokens=1,2 z.B. wäre die gewünschte Variable dann %%t)

Das goto :eof führt zum Beenden eines Ablaufes, wenn es keinen übergeordnete Ablauf/Prozess gibt, beendet diese die ausgeführte Batchdatei. goto :eof (was nichts anderes als end of bedeutet) ist eine im cmd bereits integrierte Sprungmarke und muss daher nicht definiert sein.

Ich denke, den findstr-Befehl kannst du (zur Not mithilfe von findstr /?) selbst entziffern

greetz André
Bitte warten ..
Mitglied: Sep-Karl
06.06.2011 um 10:14 Uhr
Hi André.

vielen Dank für die Erklärung, einzig, warum man die Variable %%s (bei nur einem token??) und %%t (bei mehreren tokens???) nutzt ist mir noch nicht ganz klar...

Der findstr-Befehl ist klar, Danke!!
Bitte warten ..
Mitglied: Skyemugen
06.06.2011 um 10:19 Uhr
Aloha,

man darf natürlich sinnvollerweise auch bei %%a anfangen und dann je nach Anzahl der Tokens weitere Variablen den Buchstaben des Alphabetes geben (in geordneter Reihen folge).

1. Token = genutzte Variable (z.B. %%a)
2. Token = im Alphabet folgender Buchstabe des Buchstaben, welcher in der Ursprungsvariable genutzt wurde (dann also %%b)
3. Token = im Alphabet folgender Buchstabe des Buchstaben, welcher in zweiten Variable genutzt wurde (in dem Fall dann %%c)

etc. etc. es geht also nach alphabetischer Reihenfolge und Anzahl der Tokens

In diesem Beispiel hier, wäre %%t eben der folgende Buchstabe auf %%s, wenn man tokens=1,2 also zwei Tokens verwenden würde und man nur den zweiten ausgegeben haben will (%%s wäre ja dann in dem Fall die IP)

greetz André
Bitte warten ..
Mitglied: Sep-Karl
06.06.2011 um 10:36 Uhr
Aloha,

Super Erklärung - jetzt bin ich schlauer!!

vielen Dank!!
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
gelöst Auslesen und Vergleichen Zweiter CSV Dateien Powershell (7)

Frage von Hainoon zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Daten aus CSV per Windows BATCH Datei in .txt Format schreiben lassen. (9)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit Shorewall, ISC-DHCP Server konfigurieren für Android Devices (25)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (18)

Frage von theoberlin zum Thema Windows Server ...