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

Variable aus Schleife

Frage Entwicklung Batch & Shell

Mitglied: sinsizer

sinsizer (Level 1) - Jetzt verbinden

13.10.2011, aktualisiert 14.10.2011, 2311 Aufrufe, 5 Kommentare

Hallo, erstmal hat mir das Forum bis jetzt sehr geholfen, unglaublich viele und gute Informationen.
Allerdings habe ich ein kleines Problem wo ich einfach nicht weiter komme.

01.
for /L %%i in (1,1,%anzahl%) do set /p url=URL %%i:& echo !url! >> temp1.txt & ping -n 1 !url! >> temp.txt 
02.
for /F "tokens=3,9 delims==<: " %%f in ('findstr "TTL" temp.txt') do if %%g LSS 80 (echo %%f Unix/Linux >> scan.txt & echo. >> scan.txt) else (echo %%f Windows >> scan.txt & echo. >> scan.txt)
Ich möchte in die scan.txt die vom user bestimmten URLs vor oder über den entsprechenden IPs ausgeben.

Probleme:
1. Die Variable url befindet sich in einer Schleife, die kann ich nicht nutzen. (wird ja nur der letzte wert gespeichert)
2. habe die urls in eine extra Datei geschrieben um sie von dort einzufügen, allerdings weiß ich nicht wie ich die einzelnen Zeilen auslesen und zuordnen kann.
3. Die for /F in der for /L Schleife führt zu einer steigenden Wiederholung der Ausgabe in der scan.txt. Geht also auch nicht.
4. Versuche ich in der schleife for /F den entsprechenden token aus einer anderen Zeile der temp.txt auszulesen wird der natürlich aus beiden Zeilen gelesen. (3,9 sind in der selben Zeile)

Jetzt weiß ich wie es nicht geht

Wäre toll wenn mir da jemand einen Tip oder eine Lösung geben kann.
Gerne auch zu einer besseren Formatierung oder anderer Lösungsweg.

Vielen Dank.
Mitglied: Skyemugen
13.10.2011, aktualisiert 27.10.2011
Aloha,

in etwa so (?)

01.
@echo off & setlocal enabledelayedexpansion 
02.
set /a "anzahl=2" 
03.
for /L %%i in (1,1,%anzahl%) do ( 
04.
	set /p url=URL %%i: 
05.
	for /F "tokens=3,9 delims==^<: " %%f in ('ping -n 1 !url!^|findstr "TTL"') do ( 
06.
		if %%g LSS 80 ( 
07.
		>>scan.txt (echo !url! 
08.
				echo %%f Unix/Linux) 
09.
		) else ( 
10.
		>>scan.txt (echo !url! 
11.
				echo %%f Windows 
12.
				echo.) 
13.
14.
15.
16.
pause
greetz André

P.S. Frühstück!
Bitte warten ..
Mitglied: sinsizer
13.10.2011 um 15:57 Uhr
Super, Danke für die schnelle Antwort.

Genau so hab ich mir das vorgestellt.
Leider wäre ich garnicht auf die Idee gekommen die Schleife so aufzubauen.
Wusste z.b. nicht das ">>scan.txt" auch davor stehen kann.


Da muss ich wohl noch was üben.
Bitte warten ..
Mitglied: sinsizer
14.10.2011 um 09:45 Uhr
Sorry, aber ich muss nochmal Fragen.

Wenn ich jetzt "ping -a" benutze und den Hostnamen noch ausgeben will, liegt der in einer anderen Zeile so das ich nicht einzeln ran komme.
So siehts bis jetzt aus.
01.
for /L %%i in (%start%,1,%ende%) do ( 
02.
	for /F "tokens=5" %%f in ('ping -a -n 1 %IP%.%%i ^>temp.txt ^& findstr "TTL [" temp.txt') do ( 
03.
		for /F "tokens=3,7,9 delims==<: " %%a in ('findstr "TTL" temp.txt') do ( 
04.
			if %%c LSS 35 (  
05.
						>>scan2.txt (echo %%f Zeit=%%b %%a Windows95/WindowsNT)  
06.
									echo. >> scan2.txt
Habe so leider bei jedem Durchlauf eine überflüssige Zeile drin.
Bitte warten ..
Mitglied: Skyemugen
14.10.2011 um 10:23 Uhr
Aloha,

sorry aber ich habe, ehrlich gesagt, heute keine Lust mich in dein Chaos hineinzudenken, zumal du wieder mit temp.txt arbeitest und teilweise falscher for-Zusammenstellung, dass ich schon nicht mehr blicke welche Werte du eigentlich ausgeben haben willst.

Also mach' es uns beiden doch leichter: Wie ich vermute, ist das letzter für das interne Netzwerk(?), welche Werte / Informationen willst du aus dem ping ausgegeben wissen? Denn Zeile 02 z.B. gibt 32 aus, ob du das so willst ... (?)

greetz André

egal, ich werf' dir jetzt einfach mal etwas hin ...

01.
@echo off & setlocal 
02.
set /a "start=10" 
03.
set /a "ende=15" 
04.
set "IP=192.168.100" 
05.
for /L %%i in (%start%,1,%ende%) do ( 
06.
	for /f "tokens=3,5,7,9 delims==:^< " %%a in ('ping -a -n 1 %IP%.%%i^|findstr "TTL"') do ( 
07.
		if %%d LSS 35 >>scan.txt (echo %%a Bytes=%%b Zeit=%%c Windows95/WindowsNT && echo.)		 
08.
09.
10.
11.
pause
Bitte warten ..
Mitglied: sinsizer
14.10.2011 um 12:14 Uhr
Kein Problem, verstehe mich manchmal selber nicht.

Das Ding war/ist das der Hostname, der bei "ping -a" vor der IP ausgegeben wird, in einer anderen Zeile steht als der Rest.

Habs jetzt so gelöst:
01.
(findstr  /B /V "Zeit" scan2.txt) >> log2.txt
Ist zwar ziemlich "unsauber" da ich in 2 extra Dateien schreibe, die wieder gelöscht werden, aber solange kein Hostname mit "Zeit" beginnt funktionierts.

Zu deinen Fragen: Ja, ist fürs interne. Der Wert ist so gewollt um grob Rückschlüsse auf das verwendete OS ziehen zu können.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

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

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...