Top-Themen

Aktuelle Themen (A bis Z)

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

Text-Datei IP rausparsen

Frage Entwicklung Batch & Shell

Mitglied: Planip

Planip (Level 1) - Jetzt verbinden

03.05.2012, aktualisiert 18.10.2012, 1978 Aufrufe, 15 Kommentare

Hallo,

Ich habe folgende .txt:

IPv4-Adresse . . . . . . . . . . : 192.XXX.XXX.XXX
IPv4-Adresse . . . . . . . . . . : 172.XXX.XXX.XXX

...Und würde gerne die zweite IP rausparsen. Ohne das [ IPv4-Adresse . . . . . . . . . . : ] einzig und alleine nur die zweite IP!

Momentan bekomme ich nur leere Variable raus!

Script:

for /f "tokens=2 delims=." %%a in (D:\allips.txt) do set ip1=%%a
echo %ip1%

pause

Danke für eure Hilfe!
Mitglied: bastla
03.05.2012 um 09:42 Uhr
Hallo Planip und willkommen im Forum!

Da sich zwischen den einzelnen Punkten auch Leerzeichen befinden, kann "tokens=2" nicht funktionieren - versuch es eher so:
for /f "tokens=13" %%a in (D:\allips.txt) do set "ip1=%%a"
Dabei wird allerdings genau genommen nicht die zweite, sondern die letzte IP als %ip1% gespeichert ...

Grüße
bastla
Bitte warten ..
Mitglied: Planip
03.05.2012 um 10:07 Uhr
Super Danke! Danke fürs Willkommen heißen!

Habs im Enddeffekt komplett in eine Variable geschrieben und aus dieser Ausgelesen.
Frage hierzu auf dem Desktop wird nun eine Datei names %allips (Name der Variable) gespeichert.
Warum gerade dort? Wegen des Default Path Variable?

MFG Planip!
Bitte warten ..
Mitglied: 60730
03.05.2012, aktualisiert 18.10.2012
moin,

weißt du, was aus der Ferne immer etwas schwierig ist?

Genau
Frage hierzu auf dem Desktop wird nun eine Datei names %allips (Name der Variable) gespeichert.
Warum gerade dort? Wegen des Default Path Variable?
TMo würde dir jetzt sagen, weil in Zeile 16 ein Befehl steht, der dafür zuständig ist - nimm den raus.

Gruß

PS: batch ip text
Bitte warten ..
Mitglied: 106009
03.05.2012 um 11:55 Uhr
Hi, auch von mir ein Willkommen.

Versuche es doch mal so:
01.
for /f "tokens=2 delims=:" %%a in ('findstr /C:"IPv4-Adresse" /C:"172." D:\allips.txt') do set "ip=%%a" & set ip1=%ip:~1%
Die zweite Variable ip1 dient nur dazu, das Leerzeichen, das in ip an erster Position enthalten ist zu eliminieren. Wenn du mit dem Leerzeichen leben kannst, kannst du auf den 2. set-Befehl auch verzichten.

Gruß

Edit: Anführungszeichen hinzugefügt.
Bitte warten ..
Mitglied: bastla
03.05.2012 um 21:37 Uhr
@106009
Die Suchbegriffe lassen sich (da sie ja keine Leerzeichen enthalten) zusammenfassen (obwohl ja eher eine "Und"-Verknüpfung gemeint sein dürfte, was aber durch zwei aufeinanderfolgende "findstr" zu realisieren wäre):
for /f "tokens=2 delims=:" %%a in ('findstr "IPv4-Adresse 172\." D:\allips.txt') do set "ip=%%a"
und ohne "delayedExpansion" wird (abgesehen davon, dass Du mit der dargestellten Schreibweise sogar noch ein zusätzliches Leerzeichen am Ende von %ip% erzeugst) das mit dem Leerzeichen-Entfernen nicht klappen ...

Grüße
bastla
Bitte warten ..
Mitglied: 106009
03.05.2012 um 21:41 Uhr
@bastla
Zitat von bastla:
und ohne "delayedExpansion" wird (abgesehen davon, dass Du mit der dargestellten Schreibweise sogar noch ein
zusätzliches Leerzeichen am Ende von %ip% erzeugst) das mit dem Leerzeichen-Entfernen nicht klappen ...

Ich prüfe meinen Code (fast) immer, bevor ich ihn poste. Und den habe ich geprüft und der hat geklappt (XP und Win7)., :-P

Gruß
ollidolli
Bitte warten ..
Mitglied: bastla
03.05.2012 um 21:46 Uhr
@106009
und der hat geklappt
Aber nur ohne "setlocal" und beim zweiten Anlauf (wenn es also %ip% schon gibt) ...

Grüße
bastla
Bitte warten ..
Mitglied: Planip
03.05.2012 um 21:50 Uhr
Danke euch, jetzt noch zusätzlich was gelernt geniales Forum vorallem die Antwortzeiten!!
Bitte warten ..
Mitglied: 106009
03.05.2012 um 22:11 Uhr
Zitat von bastla:
Aber nur ohne "setlocal" und beim zweiten Anlauf (wenn es also %ip% schon gibt) ...
Auch wenn du Recht hast: Und nur mit Rückenwind und Schweißfüßen.
Unter bestimmten Bedingungen wird es also doch funktionieren, nicht wahr?
Setlocal ist für den Pipifax überflüssig und getestet habe ich das in der Konsole, erst als kommandozeile und dann als Batch.

Warum bist du nicht auf die Idee gekommen?
Bitte warten ..
Mitglied: bastla
03.05.2012 um 22:22 Uhr
Hallo ollidolli!
Warum bist du nicht auf die Idee gekommen?
Auf welche Idee?
Unter bestimmten Bedingungen wird es also doch funktionieren, nicht wahr?
Nochmals zur Klarstellung:
  • Beim ersten Durchlauf wird in die Variable %ip% " 172..XXX.XXX.XXX " und in %ip1% "~1" geschrieben, da der Inhalt von %ip% noch nicht zur Verfügung steht.
  • Beim zweiten Durchlauf wird neuerlich in die Variable %ip% " 172..XXX.XXX.XXX " geschrieben - da es aber kein "setlocal" gibt, steht zunächst noch der Wert aus dem ersten Durchlauf in %ip% und kann jetzt für die Zuweisung zu %ip1% verwendet werden.
Da ich davon ausgehe, dass ein Batch beim ersten Durchlauf das gewünschte Ergebnis bringen sollte, würde ich dieses Verhalten nicht "funktionieren" nennen.

Funktionieren würde es, wenn die Zuweisung zu %ip1% in einer zweiten Zeile (außerhalb der Schleife) vorgenommen wird (da dann eben %ip% schon aufgelöst werden kann).
Setlocal ist für den Pipifax überflüssig
"setlocal" sorgt dafür, dass Änderungen an Variablenwerten nur innerhalb des ablaufenden Batches gelten - was in den allermeisten Fällen (auch hier) sinnvoll und wünschenswert ist.

Grüße
bastla
Bitte warten ..
Mitglied: 106009
03.05.2012 um 22:50 Uhr
Auf welche Idee?
tokens=2 delims=:

Nochmals zur Klarstellung:
Da ich davon ausgehe, dass ein Batch beim ersten Durchlauf das gewünschte Ergebnis bringen sollte, würde ich dieses Verhalten nicht "funktionieren" nennen.
Da ich davon ausgehe, dass ein "nicht funktionieren" keine Ausnahme zulässt, würde ich davon ausgehen, dass deine Bauptung, es funktioniert nicht, so ganz einfach falsch ist.
Es funktioniert nämlich unter bestimmten Voraussetzungen doch.
Wenn du nicht nur darauf aus bist, Ideen, die nicht von dir stammen, zu kritisieren, dann schreib gleich das, was nach deiner Meinung zum Fehlverhalten führen könnte und nicht "es wird nicht funktionieren" und nic ht erst nach einem Einwand..

Außerdem war mein Vorschlag nicht an dich, sondern an den TE gerichtet.

Du musst nicht in fast jedem Batch-Thread das letzte Wort haben.

EOD
Bitte warten ..
Mitglied: bastla
03.05.2012 um 22:59 Uhr
Hallo ollidolli!
tokens=2 delims=:
Auf die Idee war ich durchaus gekommen, habe sie aber zugunsten von "tokens=13" verworfen, da ich so das (von Dir richtig erkannte) führende Leerzeichen vermeide ...
Es funktioniert nämlich unter bestimmten Voraussetzungen doch.
Wenn Du damit zufireden bist ...
dann schreib gleich das, was nach deiner Meinung zum Fehlverhalten führen könnte und nicht "es wird nicht funktionieren"..
Eigentlich hätte ich angenommen, dass Du
und ohne "delayedExpansion" ...
inzwischen schon richtig interpretieren kannst.

Grüße
bastla
Bitte warten ..
Mitglied: 60730
03.05.2012, aktualisiert 18.10.2012
[OT]
@ Ollerdoller:

Der Bastla ist einer von den ganz harten, wenn was nicht aus seinem Hirn kommt, dann nimmt der das auseinander.
Und wenn das funktionackelt, dann hat der auch mal ein Lob übrig.
Das solltest du dann schon wissen, bevor du mit "Ideen" anfängst, die wir hier vor Jahren schon zerpflückt haben.

Such mal nach ip auslesen Batch Variable..vielleicht findest du dann sowas
Statt der 3 muss dort die 14 stehen. Bei "delims" habe ich das Leezeichen noch hinzugefügt, da sonst bei der IP-Adresse noch ein Leerzeichen davor war.
[/OT]

E:\>type E:\script\text.txt 
 
Ich habe folgende .txt: 
 
IPv4-Adresse . . . . . . . . . . : 192.123.172.123 
IPv4-Adresse . . . . . . . . . . : 172.987.654.321 
E:\> 
E:\>for /f "delims=" %a in ('findstr "172.[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9]" E:\script\text.txt') do set ip=%a 
 
E:\>set ip=IPv4-Adresse . . . . . . . . . . : 172.987.654.321 
 
E:\>set ip=%ip:~-15% 
 
E:\>echo %ip% 
172.987.654.321 
 
E:\>
Noch Fragen Kienzle?
Bitte warten ..
Mitglied: bastla
04.05.2012 um 08:15 Uhr
@T-Mo
Dein Suchbegriff ist etwas restriktiv (aber Voraussetzung dafür, dass "%ip:~-15%" passt - obwohl dann auch noch ein "/e" angebracht wäre) - flexibler (aber natürlich weniger sicher, da RegEx mit "findstr" eben nur "*" zu bieten hat):
findstr "172\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
Die Zerlegung müsste dann natürlich wieder die variable Stellenanzahl berücksichtigen (was für "for" spräche) ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
04.05.2012 um 14:31 Uhr
Salü bastla
[1/2 OT]
hat aber lang gedauert

Ich vermutete einer wird schon merken, dass da zwei Sachen stehen und die Antwort würde mit ja Hauser anfangen.
Das das (nicht nur das umgehen der wilden 13 wegen Jim Knopf) alles Humbug ist - darauf wollte ich hinaus.

C:\>echo 10.99.172.1|findstr /c:"172." && echo ätsch
10.99.172.1
ätsch

Ps: Der Onkel meiner Nichte, der auch gleichzeitig der Schwiegersohn meiner Schwiegermutter ist, der würde so nen Schmodder ja eh ganz anders machen - vielleicht wegen dem 13. Schlüssel, aber wahrscheinlich eher, weil der nen funktionierenden DNS hat.
Ich frag den mal, wenn ich Ihn sehe.
[/1/2 OT]

Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Text Datei in csv-Datei umwandeln
gelöst Frage von Haru777999Batch & Shell2 Kommentare

Hallo zusammen Am liebsten hätte ich den "Biber (Level 5 oder jetzt noch höher?)" für meine Frage. Hallo Biber! ...

VB for Applications
csv Dateien als Text importieren
gelöst Frage von BacchidaVB for Applications7 Kommentare

Hallo :) ich habe ein Makro geschrieben, das .csv Dateien importiert. Nun habe ich folgendes Problem: In den importierten ...

Batch & Shell
Auslesen einer Datei mit einem Anführungszeichen im Text
Frage von c20082005Batch & Shell1 Kommentar

Hallo zusammen, ich habe ein Problem, das ich auch nach einiger Recherche im Internet nicht gelöst bekomme: Ich habe ...

Batch & Shell
Variabel aus einer Text Datei übernemen
Frage von soritoseBatch & Shell1 Kommentar

Hallo ich bin es mal wieder der Soritose und ich habe auch wieder ein Problem wie man aus der ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 18 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 21 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...