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-Key: 282819

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

Printed on: April 25, 2024 at 22:04 o'clock

Mitglied: 114757
114757 Sep 14, 2015 updated at 09:00:03 (UTC)
Goto Top
Moin @meisterluehrs,
@echo off
set /p search=Rechnernamen eingeben:
findstr /i /c:"%search%" "C:\datei.txt"  
Gruß jodel32
Member: meisterluehrs
meisterluehrs Sep 14, 2015 at 08:59:24 (UTC)
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
Mitglied: 114757
114757 Sep 14, 2015 updated at 09:03:58 (UTC)
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"
Member: meisterluehrs
meisterluehrs Sep 14, 2015 at 09:05:26 (UTC)
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
Mitglied: 114757
114757 Sep 14, 2015 updated at 09:22:54 (UTC)
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"
Member: meisterluehrs
meisterluehrs Sep 14, 2015 at 09:16:00 (UTC)
Goto Top
erstmal danke, es hat funktioniert. Mal ne etwas andere Frage, geht es auch so Informationen aus einem Lock File zu ziehen ?
Mitglied: 114757
114757 Sep 14, 2015 updated at 09:19:43 (UTC)
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.
Member: meisterluehrs
meisterluehrs Sep 14, 2015 at 09:20:26 (UTC)
Goto Top
sorry, meinte natürlich ein Log-File
Mitglied: 114757
114757 Sep 14, 2015 updated at 09:23:00 (UTC)
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.
Member: meisterluehrs
meisterluehrs Sep 14, 2015 at 10:58:14 (UTC)
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 ^^
Mitglied: 114757
114757 Sep 14, 2015 updated at 11:10:11 (UTC)
Goto Top
Benutz bitte mal unsere Suche, das wurde hier schon bis zum Abwinken behandelt:


Danke.
Gruß jodel32
Member: meisterluehrs
meisterluehrs Sep 14, 2015 at 12:05:39 (UTC)
Goto Top
ich hab mich da jetzt mal ne Stunde durchgeklickt und werde leider net schlauer :/
Mitglied: 122990
122990 Sep 14, 2015, updated at Sep 15, 2015 at 10:26:38 (UTC)
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