lordbela
Goto Top

Auslesen einer Datei

Hallo,
als angehender Fachinformatiker hab ich mich bei euch angemeldet, weil ich noch einige Fragen habe, bevor ich zu einem Profi wie Ihr werde.

Mein Problem ist, dass ich eine .txt Datei auslesen möchte.
Ich möchte eine bestimmte Zeile in der Datei finden und die nächste Zeile ausgeben.

Im genauen soll ein Computername in der Datei gesucht werden und die darunter stehende IP-Adresse ausgegeben werden.
Der Aufbau der Datei ist wie folgt:

Computer1
192.168.0.1
Computer2
192.168.0.2
...

Da ich so gut wie keine Ahnung von Batch-Scripten habe würde ich mich über Hilfe sehr freuen.

Mit freundlichen Grüßen

LordBela

Content-ID: 181768

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

Ausgedruckt am: 05.11.2024 um 14:11 Uhr

michi1983
michi1983 12.03.2012 um 08:55:06 Uhr
Goto Top
Morgen,

die Suchfunktion findet über 400 Fragen darüber hier im Forum:


Gruß
LordBela
LordBela 12.03.2012 um 09:18:52 Uhr
Goto Top
Danke schon mal für die schnelle Antwort.
Leider wird meist immer eine Zeile geseucht und diese dann ausgegeben oder gespeichert.
Mich interessiert aber die nächste Zeile, da diese IP-Adresse später für die Netzwerkkonfiguration genutzt werden soll und möglicher Weise auch andere Angaben, die in die Datei eingetragen werden.
Zunächst reicht mir aber das Auslesen der nächsten Zeile.
Skyemugen
Skyemugen 12.03.2012, aktualisiert am 18.10.2012 um 18:50:18 Uhr
Goto Top
Aloha,

das Thema ist neu und interessant ... zumindest laut unserer Forensuche
for /f "delims=:" %%s in ('findstr /i /n "Computername2" "E:\Skripte\txt.txt"') do set /a "Zeile=%%s +1"  
for /f "tokens=1,* delims=:" %%m in ('findstr /n "^" "E:\Skripte\txt.txt"^|findstr "%Zeile%:"') do echo %%n  

greetz André
LordBela
LordBela 12.03.2012 um 10:49:43 Uhr
Goto Top
wow, vielen Dank!
Das Script funktioniert Super!

Kannst du das Script vielleicht noch erklären und sagen was ich ändern muss um eventuell die übernächste Zeile auszugeben?

MfG LordBela
LordBela
LordBela 12.03.2012 um 10:54:58 Uhr
Goto Top
Zitat von @LordBela:
Das Script funktioniert Super!

fast jedenfalls ;) bei einem nicht vorhandenen Eintrag wird das gesamte Dokument angezeigt ^^
Skyemugen
Skyemugen 12.03.2012 um 11:04:01 Uhr
Goto Top
Aloha,

da ist ja wieder mehr Erklärung als Funktion ... na dann mal die grobe Zusammenfassung:

Mittels einer Schleife, welche die Doppelpunkte als Trennzeichen setzt, wird im Such-Befehl, welcher in der angegebenen Datei nach dem angegebenen Wort sucht, mit zeilenummerierter Ausgabe gearbeitet, diese dann so aussähe: 3:Computername2. Da in der Schleife keine weiteren Teile (tokens) deklariert sind, wird der erste Abschnitt genommen, was in diesem Fall die Zeilennummer ist und wird mittels set in die Variable Zeile geschrieben, welche per Algebrafunktion /a um 1 addiert wird, sodass 3+1=4 ergibt.

Die zweite Schleife arbeitet dann dieses Mal mit Abschnitt 1 (vor den Doppelpunkten) und alles was danach kommt, wobei hier erst ein mal die Datei komplett nummeriert ausgeben wird und direkt nach der aus Schleife 1 erhaltenen (addierten) Zeilennummer gefiltert wird, wobei jetzt der zweite Teil des Fundes ausgeben wird: 4:192.168.0.2.

Willst du die übernächste Zeile zusätzlich oder als Ersatz der nächsten (momentanen Zeile)? Als Ersatz kannst du wohl selbst berechnen ... als Zusatz könntest du mit Hilfe deines Verstandes und der vorhandenen Programmlogik auch die Lösung finden face-wink

greetz André

Zitat von @LordBela:
fast jedenfalls ;) bei einem nicht vorhandenen Eintrag wird das gesamte Dokument angezeigt ^^

Es war bisher auch nie die Rede, dass dieser Eintrag nicht existieren kann ... man sollte als TE schon klare Angaben machen. ... welcher Eintrag eigentlich, der Computername oder die fehlende IP?

im Falle des Computernamens wäre
if defined Zeile
vor die zweite Schleife zu setzen (selbe Zeile)
LordBela
LordBela 12.03.2012 um 11:42:33 Uhr
Goto Top
ja, das mit der übernächsten war n FAIL von mir^^
is halt Montag xD

Vielen Dank für deine Hilfe :D

PS: super Seite hier, allerdings hoffe ich, dass Antworten, wie "sufu nutzen" oder "google doch" die Seltenheit sind. ;)
(is nicht an dich gerichtet michi1983, is meiner Meinung nach ein generelles Problem in vielen Foren)
Skyemugen
Skyemugen 12.03.2012 um 11:59:47 Uhr
Goto Top
Nein, das generelle Problem in vielen Foren ist, dass die SuFu nicht genutzt wird ... gerade im Batch-Bereich hier erfinden wir das Rad immer und immer wieder neu, weil User a) nicht suchen und b) nicht mitlesen bzw. -denken, teilweise ... den Suchtreffer der Forensuche habe ich dir ja in meinem ersten Beitrag verlinkt ... den du aber nicht gelesen hast, da du sonst die Anfrage nach dem wie nicht gestellt hättest ...

das face-sad am Fred ist von mir
LordBela
LordBela 12.03.2012 um 16:30:37 Uhr
Goto Top
oh Entschuldigung, nächstes Fettnäpfchen... ^^

gut, den Link hab ich glattweg übersehen, das größere Problem haben allerdings die Googlenutzer. Mir ist es ja auch schon oft passiert, dass man was sucht, und nicht die Formulierung der anderen trifft. Dann findet man eben nur den Satz: "sufu nutzen, fred gibts schon" und dann darf man sich erstmal im xy-forum registrieren, damit man die sufu nutzen kann.

Allerdings hast du hier recht. Etwas mehr Aufmerksamkeit von mir wäre besser gewesen. Asche auf mein Azubi-Haupt ;)
Aber nochmal großen Dank für deine Hilfe.

MfG LordBela
Skyemugen
Skyemugen 12.03.2012 um 19:23:50 Uhr
Goto Top
Zitat von @LordBela:
und dann darf man sich erstmal im xy-forum registrieren, damit man die sufu nutzen kann.
http://www.benutzer.de face-wink
bastla
bastla 12.03.2012 um 22:16:29 Uhr
Goto Top
@skye
Minimale Korrektur: Die Zeilennummer wird ohne führende Null ausgegeben (daher also in Deinem Beispiel 3:Computername2 bzw 4:192.168.0.2) - ansonsten würde es mit der Addition bei Zeile 8 oder 9 ungemütlich face-wink ...

Grüße
bastla
Skyemugen
Skyemugen 13.03.2012 um 07:16:29 Uhr
Goto Top
Aloha bastla,

stimmt, irgendwie verwechsele ich das immer mit irgendetwas anderem, wo eine führende Null vorkommt, naja dann darf der TE darüber nachdenken, was bei 08+9 passieren würde ;) Ich werd's korrigieren.

greetz André