meisterluehrs
Goto Top

Text filtern, mit Hilfe einer Batch Datei ?

Hallo, ich bräuchte mal die Hilfe von ein paar "Experten" :D, die sich mit den Batch-Dateien, bzw der CMD besser auskennen als ich.
Und zwar möchte ich gerne mit Hilfe einer Batch Datei Zeilen aus einer txt Datei filtern.

Die Textdatei sieht ungefähr so aus

pc01 max mustermann
pc02 manuell mueller
pc03 melanie maler
pc04 martin mann

ich möchte jetzt gerne wenn ich pc03 eingebe in die batchdatei, dass mir ide zeile mit melanie maler ausgegeben wird.

Wüsste einer wie es am besten geht ? Und hätte am besten auch einen passenden Code zur seite ? :D

Content-ID: 282819

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

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

114757
114757 14.09.2015 aktualisiert um 11:00:03 Uhr
Goto Top
Moin @meisterluehrs,
@echo off
set /p search=Rechnernamen eingeben:
findstr /i /c:"%search%" "C:\datei.txt"  
Gruß jodel32
meisterluehrs
meisterluehrs 14.09.2015 um 10:59:24 Uhr
Goto Top
okay, eigentlich verstehe ich das Skript, jedoch fehlt dort die Ausgabe oder ? Ich habe vergessen zu schreiben, dass ich am liebsten die Zeile aus der Textdatei in eine andere Textdatei geschrieben haben möchte, in der nur diese eine Zeile dann steht
114757
114757 14.09.2015 aktualisiert um 11:03:58 Uhr
Goto Top
Zitat von @meisterluehrs:

okay, eigentlich verstehe ich das Skript, jedoch fehlt dort die Ausgabe oder ?
im Moment wird alles auf der Konsole ausgegeben ... mehr wolltest du ja laut deinem Text nicht...
Ich habe vergessen zu schreiben, dass ich am liebsten die Zeile aus der Textdatei in eine andere Textdatei geschrieben haben möchte, in der nur diese eine Zeile dann steht
Na dann leitest du die Ausgabe von findstr stattdessen einfach in diese Datei um :
findstr /i /c:"%search%" "C:\datei.txt" >"C:\export.txt"
meisterluehrs
meisterluehrs 14.09.2015 um 11:05:26 Uhr
Goto Top
bei mir funktioniert da leider garnix ^^ ich bekomme keine Ausgabe in der Datei die ich angegeben habe, sondern nur auf der Konsole und dort steht nur meine eingabe (pc03)

@echo off

set /p search=pc03

findstr /i /c:"%search%" "C:\users\admin\desktop\test.txt" > "C:\users\admin\desktop\ausgabe.txt"

so sieht das Skript bei mir nun aus
114757
114757 14.09.2015 aktualisiert um 11:22:54 Uhr
Goto Top
Neee das, set /p wartet auf eine Eingabe deines Suchstrings in der Konsole !! Du wollstest ja selbst eine Eingabe in der Konsole machen deswegen dieses Konstrukt...
In der Variablen search wird dann diese Eingabe zwischengespeichert und als Suchstring bei findstr verwendet.

Wenn du den String stattdessen vorgeben willst musst du das /p weglassen und so schreiben:
set "search=pc03"
meisterluehrs
meisterluehrs 14.09.2015 um 11:16:00 Uhr
Goto Top
erstmal danke, es hat funktioniert. Mal ne etwas andere Frage, geht es auch so Informationen aus einem Lock File zu ziehen ?
114757
114757 14.09.2015 aktualisiert um 11:19:43 Uhr
Goto Top
Zitat von @meisterluehrs:

erstmal danke, es hat funktioniert. Mal ne etwas andere Frage, geht es auch so Informationen aus einem Lock File zu ziehen ?
Wat für'n "Lock"-File ??

Wenn's ANSI Text ist kein Problem. Wenn du mit Unicode hantierst ist die Powershell besser geeignet:
select-string

Mit Regular Expressions findest du alles was du willst, sei es noch so komplex.
meisterluehrs
meisterluehrs 14.09.2015 um 11:20:26 Uhr
Goto Top
sorry, meinte natürlich ein Log-File
114757
114757 14.09.2015 aktualisiert um 11:23:00 Uhr
Goto Top
Zitat von @meisterluehrs:

sorry, meinte natürlich ein Log-File
natürlich, s.o.

Beschäftige dich mal mit Powershell das ist für solche Sachen wesentlich besser geeignet. Batch ist ein Auslaufmodell ...



Wenns das dann war, den Beitrag bitte noch auf gelöst setzen.
meisterluehrs
meisterluehrs 14.09.2015 um 12:58:14 Uhr
Goto Top
mal ne Frage nebenbei, kann man diese Ausgabe auch mit der gleichen Batch Datei noch irgendwie weiterverarbeiten ? Wie genau ist mir egal, bloss z.b. die Zeile direkt austauschen oder sowas ^^
114757
114757 14.09.2015 aktualisiert um 13:10:11 Uhr
Goto Top
Benutz bitte mal unsere Suche, das wurde hier schon bis zum Abwinken behandelt:


Danke.
Gruß jodel32
meisterluehrs
meisterluehrs 14.09.2015 um 14:05:39 Uhr
Goto Top
ich hab mich da jetzt mal ne Stunde durchgeklickt und werde leider net schlauer :/
122990
122990 14.09.2015, aktualisiert am 15.09.2015 um 12:26:38 Uhr
Goto Top
Moin,
ich hab mich da jetzt mal ne Stunde durchgeklickt und werde leider net schlauer :/
Wie jodel schon sagt, fang am besten direkt mit Powershell an
powershell -Executionpolicy ByPass -Command "(gc 'C:\datei.txt') -replace '(^pc03) (.*)','$1 max muster' | out-file 'C:\datei.txt'"  
Ersetzt z.B. den Namen hinter dem Rechner pc03 in deiner Datei durch einen anderen.

Gruß grexit