flyingmichael
Goto Top

Batch: Ein Wort suchen und darauf hin einen Teil innerhalb des Strings als Variable setzen

Hallo Zusammen,

ich bin im Moment daran ein Batch Script zu schreiben, welches nach Eingabe eines Benutzernamen unser Logilfe nach der IP durchsucht und diese in eine Variable setzt.
Teil 1 steht:
@echo off

set _Datum1=%date:~6,4%_%date:~3,2%
set _Datum2=%date:~6,4%%date:~3,2%%date:~0,2%

echo User:
set /p wort=    
find /i "%wort%" \\nas\test$\Logfiles\%_Datum1%\%_Datum2%_logon.txt  
if errorlevel  1 echo %wort% not found..
if errorlevel  0 echo %wort%
@pause

Nach Eingabe des Benutzers werden folgende Informationen aus unserem Logfile (Logonscript) gelesen:
8:04:32; Benutzername Rechnername; IP; MAC; \\logonserver
8:04:32; Benutzername; Rechnername; IP; MAC; Inventory x64 start...
8:04:32; Benutzername Rechnername; IP; MAC; Inventory x64 beendet.

Ich möchte nun anhand des eingegebenen Benutzernamens die dazugehörige IP in dem String in eine Variable setzen.
8:04:32; Benutzername Rechnername; IP; MAC; \\logonserver

Ist das möglich? Wenn ja hat jemand ein Beispiel/Idee für mich?

Besten Dank

LG

Michael

Content-ID: 307069

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

Ausgedruckt am: 23.11.2024 um 12:11 Uhr

129413
Lösung 129413 14.06.2016 aktualisiert um 12:11:36 Uhr
Goto Top
Hi.
@echo off
set _Datum1=%date:~6,4%_%date:~3,2%
set _Datum2=%date:~6,4%%date:~3,2%%date:~0,2%

:: Variable hält später die IP
set IP=

set /p wort=User eingeben:

:: Zeile suchen und Spalte 4 (IP) extrahieren und in Variabler speichern
for /f "tokens=4 delims=;" %%a in ('findstr /ic:"%wort%" "\\nas\test$\Logfiles\%_Datum1%\%_Datum2%_logon.txt" 2^>nul') do set "IP=%%a"  

:: Je nachdem ob IP gefunden wurde oder nicht reagieren
if defined IP (
  echo IP ist %IP%
) else (
  echo Kein Eintrag gefunden
)
Gruß skybird

edit Kommentare ergänzt und einen Fehler korrigiert
flyingmichael
flyingmichael 14.06.2016 aktualisiert um 12:16:04 Uhr
Goto Top
Hi,

erstmal danke für die schnelle Antwort.

Mit dem Code erhalte ich als Ausgabe nur "Kein Eintrag gefunden" obwohl definitiv einer vorhanden ist.

In unserem Log.txt steht wie gesagt folgender Text:

8:04:32; Benutzername Rechnername; IP; MAC; \\logonserver
8:04:32; Benutzername; Rechnername; IP; MAC; Inventory x64 start...
8:04:32; Benutzername Rechnername; IP; MAC; Inventory x64 beendet.

Die Daten IP, MAC etc werden im Logonscript ausgelesen und als Text in das Log geschrieben.

edit: und schon funktioniert es. Sehr cool. Besten Dank!
129413
Lösung 129413 14.06.2016 aktualisiert um 12:16:47 Uhr
Goto Top
Hatte noch einen Fehler nachträglich oben korrigiert ...
Rechnername und Benutzername sind aber schon per Semikolon voneinander getrennt ?? Denn ein zwei deiner Zeilen haben dort kein Semikolon!
8:04:32; Benutzername Rechnername; IP; MAC; \\logonserver
8:04:32; Benutzername; Rechnername; IP; MAC; Inventory x64 start...
8:04:32; Benutzername Rechnername; IP; MAC; Inventory x64 beendet.
flyingmichael
flyingmichael 14.06.2016 um 12:16:46 Uhr
Goto Top
Sorry ja sind alle getrennt. Mit dem Edit funktionierts! DANKE
129413
129413 14.06.2016 aktualisiert um 12:17:53 Uhr
Goto Top
Keine Ursache face-smile

Gruß skybird
flyingmichael
flyingmichael 14.06.2016 um 12:30:47 Uhr
Goto Top
Jetzt habe ich noch ein kleines Problem, vor der IP also nach dem 4; sind noch 2 Leerzeichen wie bekomme ich die aus der Varibale?
129413
Lösung 129413 14.06.2016 aktualisiert um 12:33:38 Uhr
Goto Top
Zitat von @flyingmichael:

Jetzt habe ich noch ein kleines Problem, vor der IP also nach dem 4; sind noch 2 Leerzeichen wie bekomme ich die aus der Varibale?
So kannst du Leerzeichen aus der Variablen eliminieren:
set IP=%IP: =%
echo %IP%
Siehe: http://www.dostips.com/DtTipsStringManipulation.php