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, 2504 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ä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 2 Csv -Dateien zum Teil zusammenfügen (6)

Frage von Piotrney zum Thema Batch & Shell ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...