blacksun
Goto Top

Per Batch Wert in einer Datei suchen und Variable mit einem Wert aus 2. Spalte belegen

Hallo zusammen,

ich habe an zentraler Stelle auf einem Netzwerkshare eine Datei user.txt, die wie folgt aufgebaut ist:

Anton 192.168.33.181
Doris 192.168.33.182
Richi 192.168.33.183

Die Datei liegt zentral auf M:\Konfigfiles\


Des weiteren habe ich eine Username.

Wie suche per Batch am besten und setze den zweiten Wert (die zweite Spalte, also die ip-Adresse, in die Variable IP?

Vielen Dank schonmal.

Viele Grüße
Martin

Content-ID: 188372

Url: https://administrator.de/forum/per-batch-wert-in-einer-datei-suchen-und-variable-mit-einem-wert-aus-2-spalte-belegen-188372.html

Ausgedruckt am: 22.12.2024 um 22:12 Uhr

Onitnarat
Onitnarat 20.07.2012 um 15:21:11 Uhr
Goto Top
Hi,
überfliege mal dieses hier: http://www.grymoire.com/Unix/Sed.html

Ganz unten gibts die FAQs (http://sed.sourceforge.net/sedfaq.html) mit Downloadmöglichkeit.

Gruß
Marcus
bastla
bastla 20.07.2012 aktualisiert um 15:50:24 Uhr
Goto Top
Hallo blacksun!

Etwa so:
@echo off & setlocal
set "IP="  
for /f %%i in ('findstr /ibc:"%username% " "M:\Konfigfiles\user.txt"') do set "IP=%%i"  
if not defined IP echo "Nicht gefunden!" & goto :eof  
Grüße
bastla
blacksun
blacksun 20.07.2012 aktualisiert um 16:22:08 Uhr
Goto Top
Hallo bastla,

vielen Dank schonmal für die Hilfe.
hmm, also die Batch belegt so lediglich die Variable IP mit dem Wert der Variable Username
IP soll aber die zweite Spalte sein, also die IP-Adresse, die dem Namen zugeordnet ist.

Geht das überhaupt?
Ansich würde ich sagen da muss noch was mit delims rein.
bastla
bastla 20.07.2012 aktualisiert um 16:23:56 Uhr
Goto Top
Hallo blacksun!
Ansich würde ich sagen da muss noch was mit delims rein.
Fast face-wink - "tokens" hatte gefehlt:
for /f "tokens=2" %%i in ('findstr /ibc:"%username% " "M:\Konfigfiles\user.txt"') do set "IP=%%i"
oder (hier zwar nicht nötig, da die IP ja keine Leerzeichen enthält, aber schadet auch nicht):
for /f "tokens=1*" %%i in ('findstr /ibc:"%username% " "M:\Konfigfiles\user.txt"') do set "IP=%%j"
Die Angabe eines Delimiters ist nicht nötig, da defaultmäßig Leerzeichen und TAB als Trennzeichen gelten ...

Grüße
bastla
blacksun
blacksun 20.07.2012 aktualisiert um 17:06:08 Uhr
Goto Top
Zitat von @bastla:
oder (hier zwar nicht nötig, da die IP ja keine Leerzeichen enthält, aber schadet auch nicht):
for /f "tokens=1*" %%i in ('findstr /ibc:"%username% "
> "M:\Konfigfiles\user.txt"') do set "IP=%%j"
> 
Die Angabe eines Delimiters ist nicht nötig, da defaultmäßig Leerzeichen und TAB als Trennzeichen gelten ...

juhu, es funktioniert.

ich trau mich ja gar nicht zu fragen, aber wie lange lebt die variable IP eigentlich?
nur so lange die batch läuft?

Ich frage, weil wenn ich nach dem Durchlauf
set
eingebe, dann gibt es die Variable nicht.

Für den Fall dass das mal nötig wäre (in einem anderen Anwendungsfall), kann man die Variable auch so setzen, dass sie Systemweit zur Verfügung steht und auch bleibt?
bastla
bastla 20.07.2012 um 17:39:26 Uhr
Goto Top
Hallo blacksun!
Für den Fall dass das mal nötig wäre (in einem anderen Anwendungsfall), kann man die Variable auch so setzen, dass sie Systemweit zur Verfügung steht und auch bleibt?
Nicht wirklich gut (Stichwort "setx") - im Zweifelsfalls kann ja der nächste Batch die paar Zeilen wieder ausführen. Alternativ dazu könnte die Information natürlich auch einfach in einer Textdatei hinterlegt werden ...

Grüße
bastla