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-Key: 188372

Url: https://administrator.de/contentid/188372

Printed on: April 19, 2024 at 21:04 o'clock

Member: Onitnarat
Onitnarat Jul 20, 2012 at 13:21:11 (UTC)
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
Member: bastla
bastla Jul 20, 2012 updated at 13:50:24 (UTC)
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
Member: blacksun
blacksun Jul 20, 2012 updated at 14:22:08 (UTC)
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.
Member: bastla
bastla Jul 20, 2012 updated at 14:23:56 (UTC)
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
Member: blacksun
blacksun Jul 20, 2012 updated at 15:06:08 (UTC)
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?
Member: bastla
bastla Jul 20, 2012 at 15:39:26 (UTC)
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