Bestimmte Teil einer CSV auslesen
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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 167502
Url: https://administrator.de/forum/bestimmte-teil-einer-csv-auslesen-167502.html
Ausgedruckt am: 20.04.2025 um 21:04 Uhr
8 Kommentare
Neuester Kommentar
Aloha,
na das lässt sich doch ganz simpel per Schleife und
greetz André
edit: Nachbesserung à la Friemlers Einwand
na das lässt sich doch ganz simpel per Schleife und
findstr
realisieren: (siehe Beispiel)@echo off & setlocal
set "datei=test.csv"
set "raum=50.126"
for /f "tokens=2 delims=;" %%s in ('findstr /c:".%raum%." "%datei%"') do echo %%s
pause
goto :eof
greetz André
edit: Nachbesserung à la Friemlers Einwand
Aloha,
klar, es wirkt erst einmal seltsam eine Schleife für eine Einzelheit zu nutzen aber die
Da die CSV glücklicherweise in Semikola unterteilt ist und du den Wert der zweiten Spalte haben willst, nutzt man ganz einfach das Trennzeichen
Das
Ich denke, den
greetz André
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é
Aloha,
man darf natürlich sinnvollerweise auch bei
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
greetz André
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é