maho1987
Goto Top

Probleme mit Variablen und FOR Schleife

Ich bin gerade für die Arbeit so eine Art IP-Scanner am bauen, jedoch habe ich Probleme mit Variablen in einer FOR Schleife.

Hallo Zusammen,

Zurzeit schreibe ich für die Arbeit so eine Art IP-Scanner, jedoch klappt dieser nicht ganz da die Batch in einer FOR \L Schleife nicht ins die Variablen %status% und %name% schreibt.
Sobald ich mir diese per ECHO ausgeben lasse, steht dort nichts drin. Könnt Ihr mir vlt helfen face-sad

@echo off & setlocal EnableDelayedExpansion

ECHO Bitte IP eingeben: ( XXX.XXX.XXX )
SET /p ip=


ECHO Bitte Anzahl an Rechner eingeben:
SET /p anzahl=

FOR /L %%N IN (1, 1, %anzahl%) DO (

PING -a %ip%.%%N > tmp_%ip%.%%N.txt

FIND "TTL" < tmp_%ip%.%%N.txt && SET status=online  
FIND "TTL" < tmp_%ip%.%%N.txt || SET status=offline  
FIND "TTL" < tmp_%ip%.%%N.txt && for /f "tokens=2 delims= " %%i in ('findstr "mit" tmp_%ip%.%%N.txt') do SET nanme=%%i  

ECHO %ip%.%%N;%status%;%name% >> ip.txt

)

pause

Content-Key: 154911

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

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

Member: bastla
bastla Nov 11, 2010 at 17:34:06 (UTC)
Goto Top
Hallo maho1987 und willkommen im Forum!

Du hast ja mit "setlocal EnableDelayedExpansion" schon gut begonnen - dann nur noch konsequent bleiben und die damit geschaffene Möglichkeit auch verwenden:
(ECHO %ip%.%%N;!status!;!name!)>>ip.txt
Die Klammern sollen übrigens nur das Ausgeben eines Leerzeichens nach dem Namen verhindern - wenn's nicht stört kannst Du sie auch weg lassen, bzw genügt in diesem Fall ziemlich sicher (Du wirst vermutlich keine Rechnernamen haben, die nur aus einer Ziffer bestehen) auch:
ECHO %ip%.%%N;!status!;!name!>>ip.txt
Grüße
bastla
Mitglied: 60730
60730 Nov 11, 2010 at 23:04:12 (UTC)
Goto Top
Servus und auch von mir ein willkommen..

Hallo zusammen; Codeblöcke; richtige Rubrik gefunden, ja ist denn schon wieder Weihnachten?

Ein/zwei/drei kleine Tipps:#

  • Zeile 3 & 4 kannst du zusammenfassen:
SET /p ip=Bitte IP eingeben: ( XXX.XXX.XXX )

(das Sprungziel start muß dann natürlich dazu und wenn du mal ein 10.x.x. Netz abfragen willst - müßtest du das anpassen)

  • Zeile 6/7 siehe 3&4 obwohl das irreführend ist, denn es geht davon aus, das 1 nicht das GW ist und das jeder Rechner immer eine Folgeip bekommt und keine Lücken da sind.
SET /p anzahl=wieviele Adressen sollen durchsucht werden weit soll das Netz durchsucht werden?


Gruß
Member: bastla
bastla Nov 11, 2010 at 23:30:52 (UTC)
Goto Top
@t-mo
schränkt allerdings etwas stark ein (nur jeweils 3-stellige Werte ohne Nullen) - etwas weniger restriktiv (aber dafür tatsächlich mit Prüfung auf Trennung durch Punkte):
echo %ip% |findstr "[1-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*">nul && echo Eingabe scheint korrekt zu sein ||goto start
Oder so:
set "OK="  
for /f "tokens=1-3 delims=." %%a in ("%ip%") do if not "%%c"=="" if %%a leq 223 if %%b leq 255 if %%c leq 255 set "OK=True"  
if not defined OK goto :start
Grüße
bastla
Member: maho1987
maho1987 Nov 12, 2010 at 09:03:56 (UTC)
Goto Top
Danke an Alle.
Mit den Änderungen funktioniert mein Tool endlich.
Werde das Forum weiterempfehlen und versuchen hier aktiv zu sein.
Bis dann mal
Mitglied: 60730
60730 Nov 12, 2010 at 09:53:51 (UTC)
Goto Top
[OT]
@ Bastla - das beweist wieder mal, du denkst um 0.30 weiter, als ich um 0.04 face-sad
Die 0-9 wollte ich zwar auch ab der 2. ziffer der Oktette reinmachen, hatte aber einen FaulheitsC&Pfehler, aber so ist es viel hybscher face-wink
[/OT]

@ Maho: das ist schön, geben und nehmen face-wink

Gruß
Hotly discussed
gleixnerdCheck of ZFW Firewallgleixnerd - 3 CommentsAlexWishaHow to set up and configure a Linux GRE tunnelAlexWisha - 3 CommentsjstrickerWIREGUARD VPN ON UDM PRO BEHIND FRITZBOX - HANDSHAKE DID NOT COMPLETEjstricker - 3 CommentsDaniEnd of Support dates for Office 2016, 2019 Apps und Productivity ServersDani - 1 Comment