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

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

Printed on: April 18, 2024 at 13:04 o'clock

Mitglied: 129413
Solution 129413 Jun 14, 2016 updated at 10:11:36 (UTC)
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
Member: flyingmichael
flyingmichael Jun 14, 2016 updated at 10:16:04 (UTC)
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!
Mitglied: 129413
Solution 129413 Jun 14, 2016 updated at 10:16:47 (UTC)
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.
Member: flyingmichael
flyingmichael Jun 14, 2016 at 10:16:46 (UTC)
Goto Top
Sorry ja sind alle getrennt. Mit dem Edit funktionierts! DANKE
Mitglied: 129413
129413 Jun 14, 2016 updated at 10:17:53 (UTC)
Goto Top
Keine Ursache face-smile

Gruß skybird
Member: flyingmichael
flyingmichael Jun 14, 2016 at 10:30:47 (UTC)
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?
Mitglied: 129413
Solution 129413 Jun 14, 2016 updated at 10:33:38 (UTC)
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