svenguenter
Goto Top

Alle IP Nummern in Textfile schreiben

So also folgendes Problem.
Ich möchte die IP-Nummern per script auslesen lassen.
Ich habe im ADS im Logon und im Logoff ein Script ( bzw. ein und dasselbe nur es werden je nach art verschiedene Parameter übergeben ) welches mir den usernamen;computernamen;ip-nummer;datum;uhrzeit;flag für online oder offline in eine Datei schreibt.

Nun kann es sein das ein Computer mehrere IP-Nummern hat. Diese will ich gerne auch mit in die Datei schreiben. Am liebsten wäre mir dieser string
usernamen;computernamen;ipnummer-1,ip-nummer-2,ip-nummer-n;datum;uhrzeit;flag für online oder offline

mein script bisher sieht wie folgt aus

@ECHO OFF

REM Überabeparameter welcher angibt ob es sich um ein LOGON oder ein LOGOFF handelt
REM 1 steht für LOGON und 0 für ein LOGOFF
ECHO Argument 1 : %1
ECHO Argument 2 : %2


REM Prüfen ob der Parameter gesetzt wurde, Wenn er gesetzt wurde wird weitergearbeitet falls er nicht gesetzt wurde wird
REM der Batch abgeborchen
IF "%1" == ?  GOTO hilfe  
IF "%1" == "" GOTO hilfe  
IF "%2" == "" GOTO hilfe  

IF NOT "%1" =="" set status=%1  
IF NOT "%2" =="" set pfadangabe=%2  

REM Setzen des monats und des jahres. Diese Daten werden nachher benutzt um den Namen der Datei zu bestimmen in die geschrieben werden soll
SET monat=%date:~-7,2%
SET tag=%date:~-10,2%
set IP=""  
REM Ermitteln der IP-Adresse
FOR /F "tokens=2 delims=:" %%i IN ('ipconfig^|FIND "IP-Adresse"') DO SET IP=%%i          
REM echo %IP%
REM Löschen der führenden Leerzeichen
SET IP=%IP:~1%

REM Ausgabestring. Hier wird der Ausgabestring erstellt der in die passende Datei geschrieben wird. Der string setzt sich wie eine .csv Datei zusammen.
REM Man kann diese also umnennen um Sie ins Excel zu importieren oder auch direkt in eine DB importieren, da die Delemiter ; sind und ende dees Datensatzes \n
rem echo %pfadangabe%%monat%%tag%
ECHO "%USERNAME%";"%COMPUTERNAME%";"%IP%";%DATE%;%TIME%;%status% >> %pfadangabe%%monat%%tag%.txt  

GOTO ende
Rem Hier das Springziel der Hilfe. Kurze erläuterung wie man die Batchdatei aufrufen muss, damit diese funktioniert.
:hilfe
ECHO programm [1=logon oder 0=logoff] [laufwerksbuchstabe:\Ordnername\dateiname ohne dateiendung]

:ende


Das Problem was ich habe ist das ich es nicht schaffe die verschiedenen IP-Nummern in irgendeinerweise zu verknüpfen.
In VB oder C oder C++ wäre das kein prob aber es soll halt über den batch passieren.


Gruß

Sven

Content-ID: 77842

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

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

miniversum
miniversum 11.01.2008 um 10:42:50 Uhr
Goto Top
ersetze mal die Zeilen:
REM Ermitteln der IP-Adresse
FOR /F "tokens=2 delims=:" %%i IN ('ipconfig^|FIND "IP-Adresse"') DO SET IP=%%i
REM echo %IP%
REM Löschen der führenden Leerzeichen
SET IP=%IP:~1%
Ducht diese:
REM Ermitteln der IP-Adressen
set "IP="
FOR /F "tokens=2 delims=:" %%i IN ('ipconfig^|FIND "IP-Adresse"') DO call SET IP=%%IP%%;%%i
REM echo %IP%
REM Löschen des führenden Semikolon
SET IP=%IP:~1%
REM Löschen der führenden Leerzeichen
SET IP=%IP: =%
miniversum
stbewo
stbewo 11.01.2008 um 10:57:57 Uhr
Goto Top
Hallo Sven,

setlocal ENABLEDELAYEDEXPANSION
FOR /F "tokens=2 delims=:" %%i IN ('ipconfig^|FINDSTR "IP Adress"') DO SET IP=!ip!%%i

damit sollte es funktionieren (jedenfalls bei mir). "IP Adress" engl. OS.

Gruß
Stefan
SvenGuenter
SvenGuenter 11.01.2008 um 11:21:58 Uhr
Goto Top
Hi Stefan,

super mit deinem String hat es geklaptp. Aber nun noch eine Frage der String in der Txt sieht folgendermaßen aus

"guenter";"IT-05";""" 192.xxx.xxx.x 192.xxx.xxx.x 172.xx.xx.xx ";11.01.2008;11:14:48,05;1


ich hätte aber gerne

"guenter";"IT-05";"192.xxx.xxx.x","192.xxx.xxx.x","172.xx.xx.xx";11.01.2008;11:14:48,05;1
oder
"guenter";"IT-05";"192.xxx.xxx.x,192.xxx.xxx.x,172.xx.xx.xx";11.01.2008;11:14:48,05;1

weißt du wie das klappt bzw. wie ich das realisieren kann?

Gruß

Sven
miniversum
miniversum 11.01.2008 um 11:34:08 Uhr
Goto Top
Dafür müstest du drunter noch das machen:
FOR /F "tokens=2 delims=:" %%i IN ('ipconfig^|FINDSTR "IP Adress"') DO SET IP=!ip!%%i
REM Löschen des führenden Leerzeichen
SET IP=%IP:~1%
REM Leerzeichen durch Komma ersetzen
SET IP=%IP: =,%
oder gleich so:
FOR /F "tokens=2 delims=:" %%i IN ('ipconfig^|FINDSTR "IP Adress"') DO SET IP=!ip!,%%i
REM Löschen des führenden Leerzeichen
SET IP=%IP:~1%
miniversum
stbewo
stbewo 11.01.2008 um 11:42:03 Uhr
Goto Top
Hallo Sven

mit

FOR /F "tokens=2 delims=:" %%i IN ('ipconfig^|FINDSTR "IP Adress"') DO SET IP=%%i,!ip!
SET IP=%IP:~0,-1%

Gruß
Stefan
SvenGuenter
SvenGuenter 11.01.2008 um 12:17:16 Uhr
Goto Top
super Stefan danke das klappt echt genial. Aber nun habe ich nur noch ein problem und zwar folgendes der string in der txt sieht folgendermaßen aus
"guenter";"IT-05";"172.xx.xx.18, 192.xxx.xxx.1, 192.xxx.xxx.1,"" ";11.01.2008;12:15:07,63;1

problem sind die " " nach der letzten ip. bekommt man die im batch noch weg oder muss ich die im vbs ersetzen bzw. löschen
stbewo
stbewo 11.01.2008 um 12:43:21 Uhr
Goto Top
Hallo Sven,

du hast noch wahrscheinlich

set IP=""

in deinem Batch stehen. Lösch das raus und nehm noch das

SET IP=%IP:~0,-1%

unter "for" rein damit das letzte Komma gelöscht wird.


Gruß
Stefan
SvenGuenter
SvenGuenter 11.01.2008 um 12:54:46 Uhr
Goto Top
japp gemacht und der string sieht immer besser aus

"guenter";"IT-05";" 172.xx.xx.18, 192.xxx.xxx.1, 192.xxx.xxx.1, ";11.01.2008;12:52:08,41;1

setlocal ENABLEDELAYEDEXPANSION
FOR /F "tokens=2 delims=:" %%i IN ('ipconfig^|FIND "IP-Adresse"') DO SET IP=%%i,!ip!          
rem echo %IP%
SET IP=%IP:~0,-1%
pause

leider ist das Komma noch drin.
stbewo
stbewo 11.01.2008 um 13:03:12 Uhr
Goto Top
Dann spiel mal mit

SET IP=%IP:~0,-1%

und mach aus der 1 eine 2. Es sollten eigentlich alle Stellen bis auf die letzte (-1) übernommen werden.

Stefan
SvenGuenter
SvenGuenter 11.01.2008 um 13:25:42 Uhr
Goto Top
hi Stefan super hat geklappt.

danke nochmal kann das script dann gleich mal ausprobieren.


Gruß

Sven