Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Probleme mit Variablen und FOR Schleife

Frage Entwicklung Batch & Shell

Mitglied: maho1987

maho1987 (Level 1) - Jetzt verbinden

11.11.2010, aktualisiert 17:36 Uhr, 4005 Aufrufe, 5 Kommentare

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

01.
@echo off & setlocal EnableDelayedExpansion 
02.
 
03.
ECHO Bitte IP eingeben: ( XXX.XXX.XXX ) 
04.
SET /p ip= 
05.
 
06.
 
07.
ECHO Bitte Anzahl an Rechner eingeben: 
08.
SET /p anzahl= 
09.
 
10.
FOR /L %%N IN (1, 1, %anzahl%) DO ( 
11.
 
12.
PING -a %ip%.%%N > tmp_%ip%.%%N.txt 
13.
 
14.
FIND "TTL" < tmp_%ip%.%%N.txt && SET status=online 
15.
FIND "TTL" < tmp_%ip%.%%N.txt || SET status=offline 
16.
FIND "TTL" < tmp_%ip%.%%N.txt && for /f "tokens=2 delims= " %%i in ('findstr "mit" tmp_%ip%.%%N.txt') do SET nanme=%%i 
17.
 
18.
ECHO %ip%.%%N;%status%;%name% >> ip.txt 
19.
 
20.
21.
 
22.
pause
Mitglied: bastla
11.11.2010 um 18:34 Uhr
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
Bitte warten ..
Mitglied: 60730
12.11.2010 um 00:04 Uhr
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 Loch in Zeile 4/5 mit sowas füllen:
echo %Iip% |findstr "[1-9][1-9][1-9].[1-9][1-9][1-9].[1-9][1-9][1-9]\" && echo Eingabe scheint korrekt zu sein ||goto start
(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?

  • Und auch diese freigewordene Zeile kannst du so sinnvoll füllen:
set /a anzahl=%anzahl% && echo Counter endet bei %anzahl% || echo den Wert %anzahl% akzeptiere ich nicht

Gruß
Bitte warten ..
Mitglied: bastla
12.11.2010 um 00:30 Uhr
@T-Mo
echo %Iip% |findstr "[1-9][1-9][1-9].[1-9][1-9][1-9].[1-9][1-9][1-9]\" && echo Eingabe scheint korrekt zu sein ||goto start
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:
01.
set "OK=" 
02.
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" 
03.
if not defined OK goto :start
Grüße
bastla
Bitte warten ..
Mitglied: maho1987
12.11.2010 um 10:03 Uhr
Danke an Alle.
Mit den Änderungen funktioniert mein Tool endlich.
Werde das Forum weiterempfehlen und versuchen hier aktiv zu sein.
Bis dann mal
Bitte warten ..
Mitglied: 60730
12.11.2010 um 10:53 Uhr
[OT]
@ Bastla - das beweist wieder mal, du denkst um 0.30 weiter, als ich um 0.04
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
[/OT]

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

Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

Frage von .Sessl zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell - Werte in Variable durch Schleife erweitern bzw. ändern (5)

Frage von ralfkausk zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit zusammengesetzter Variable auf andere Variable zugreifen (2)

Frage von abiber zum Thema Batch & Shell ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (21)

Frage von NoHopeNoFear zum Thema LAN, WAN, Wireless ...

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (12)

Frage von alemanne21 zum Thema Webentwicklung ...