bestimmte Zeile aus .txt oder .log kopieren per batch vbs
Hallo
also ich habe das problem ich will aus einer txt/log datei(ist eh egal ;D)eine bestimmte zeile in eine andere txt oder sogar gleich per e-mail kopieren/verschicken habe scho eine menge über so ein problem hier gelesen und auch probiert aber bekomme leider nur fehlermeldungen
könnte mir jemand helfen ? Es ist völlig egal ob vbs oder batch solange es funktioniert! ;D
also ich habe das problem ich will aus einer txt/log datei(ist eh egal ;D)eine bestimmte zeile in eine andere txt oder sogar gleich per e-mail kopieren/verschicken habe scho eine menge über so ein problem hier gelesen und auch probiert aber bekomme leider nur fehlermeldungen
könnte mir jemand helfen ? Es ist völlig egal ob vbs oder batch solange es funktioniert! ;D
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 97356
Url: https://administrator.de/forum/bestimmte-zeile-aus-txt-oder-log-kopieren-per-batch-vbs-97356.html
Ausgedruckt am: 24.12.2024 um 00:12 Uhr
17 Kommentare
Neuester Kommentar
Servus,
schau doch mal HIER - zu finden unter "Mögliche Antworten oder verwandte Beiträge".
Speziell Beiträge (Code Beispiele) von Bastla nachvollziehen.
Und dann (falls überhaupt noch vorhandene) Fragen stellen.
Und wegwn Mailen, Blat.exe oder Bmail.exe sind dann die Buchstabenkombinationen, mit denen du die Suchfunktion / Google anwirfst.
Gruß
schau doch mal HIER - zu finden unter "Mögliche Antworten oder verwandte Beiträge".
Speziell Beiträge (Code Beispiele) von Bastla nachvollziehen.
Und dann (falls überhaupt noch vorhandene) Fragen stellen.
Und wegwn Mailen, Blat.exe oder Bmail.exe sind dann die Buchstabenkombinationen, mit denen du die Suchfunktion / Google anwirfst.
Gruß
Hallo rhaziel!
Als Batch etwa so:
Für's Versenden per Mail wird gerne "blat" verwendet ...
Grüße
bastla
[Edit] @timobeil: Na geht doch ... [/Edit]
Als Batch etwa so:
findstr /c:"Text, der nur in der bestimmten Zeile enthalten ist" "D:\Egaldatei.txt">"D:\Neue Datei.txt"
Grüße
bastla
[Edit] @timobeil: Na geht doch ... [/Edit]
servus,
gib mal
Umlaute usw. bitte bei find & findstr aussparen
Gruß
@ Bastla: auch ein blindes huhn findet mal ein Korn
gib mal
Type "D:\Egaldatei.txt">"D:\Neue Datei.txt"
ein - wird die gefüllt und was steht da drin?Umlaute usw. bitte bei find & findstr aussparen
Gruß
@ Bastla: auch ein blindes huhn findet mal ein Korn
Hallo rhaziel!
Falls sich das mit Deinem Gewissen vereinbaren lässt, könntest Du vielleicht einmal konkret die verwendete Zeile (und ev sogar einen Auszug aus der "txt/log"-Datei) posten - ansonsten bitte beachten, dass der Suchtext exakt mit dem Text der Zeile übereinstimmen muss (bzw noch den Schalter "/i" verwenden - siehe "findstr /?") ...
Grüße
bastla
Falls sich das mit Deinem Gewissen vereinbaren lässt, könntest Du vielleicht einmal konkret die verwendete Zeile (und ev sogar einen Auszug aus der "txt/log"-Datei) posten - ansonsten bitte beachten, dass der Suchtext exakt mit dem Text der Zeile übereinstimmen muss (bzw noch den Schalter "/i" verwenden - siehe "findstr /?") ...
Grüße
bastla
Hallo rhaziel!
Erste Zeile:
Letzte Zeile:
Wenn Du jeweils
als letzte Zeile verwendest, wird die Zeile an eine ev schon bestehende "D:\Neue Datei.txt" angefügt.
Grüße
bastla
Erste Zeile:
@echo off & setlocal
set Zeile=
for /f "usebackq delims=" %%i in ("D:\Egaldatei.txt") do if not defined Zeile set "Zeile=%%i"
>"D:\Neue Datei.txt" echo %Zeile%
Letzte Zeile:
@echo off & setlocal
for /f "usebackq delims=" %%i in ("D:\Egaldatei.txt") do set "Zeile=%%i"
>"D:\Neue Datei.txt" echo %Zeile%
>>"D:\Neue Datei.txt" echo %Zeile%
Grüße
bastla
Hallo rhaziel!
Das ist eigentlich nur möglich, wenn die Eingabedatei leer ist (bzw nur Leerzeichen enthält).
Falls dem nicht so wäre: Magst Du vielleicht ein paar Musterzeilen (auch mit veränderten/anonymisierten Daten - interessant wären nur Aufbau bzw ev enthaltene Sonderzeichen) dieser Datei posten?
Grüße
bastla
Das ist eigentlich nur möglich, wenn die Eingabedatei leer ist (bzw nur Leerzeichen enthält).
Falls dem nicht so wäre: Magst Du vielleicht ein paar Musterzeilen (auch mit veränderten/anonymisierten Daten - interessant wären nur Aufbau bzw ev enthaltene Sonderzeichen) dieser Datei posten?
Grüße
bastla
Moin rhaziel,
drei Hinweise zu Deinem Kommentar:
1) Heute muss Montag sein.
2) Der ganze Kommentar enthält keinen einzigen Punkt - was eventuell daran liegt, dass Du es nicht auf den Punkt bringen willst.
3) Der letzte Bandwurm erschließt sich mir nicht ganz - ist das ein Rap, ein Text von Xavier Naidoo oder sogar Dadaismus?
Falls wir hier bei der Fehlerabstellung helfen sollen, dann poste bitte einen wirklichkeitsnahen Auszug aus Deiner Logdatei..
Philosopische Betrachtungen wie ...hmm also der inhalt ist bis jetz relativ egal .. sind nicht so zielführend.
Danke
Biber
drei Hinweise zu Deinem Kommentar:
1) Heute muss Montag sein.
2) Der ganze Kommentar enthält keinen einzigen Punkt - was eventuell daran liegt, dass Du es nicht auf den Punkt bringen willst.
3) Der letzte Bandwurm erschließt sich mir nicht ganz - ist das ein Rap, ein Text von Xavier Naidoo oder sogar Dadaismus?
...blos das is relativ blöde wenn man aus einer txt datei die sich dauernd verändert was zu machen
Falls wir hier bei der Fehlerabstellung helfen sollen, dann poste bitte einen wirklichkeitsnahen Auszug aus Deiner Logdatei..
Philosopische Betrachtungen wie ...hmm also der inhalt ist bis jetz relativ egal .. sind nicht so zielführend.
Danke
Biber
Servus,
deine Zeile:
Ergo müsste die Zeile ungefähr so lauten:
Ps:
^^ Mit find oder findstr kannst du z.b keine "echten" (via regedit exportierten) .reg files durchsuchen, erst wenn die per Type in eine frische Datei geschrieben wurden.
Gruß
deine Zeile:
hmm also der inhalt ist bis jetz relativ egal sind aber keine sonderzeichen oder dergleichen...
widerspricht sich leider mit dem Log..Sep, 04 - 13:34:04 | Startig Hot CPU
|
...ist ein Sonderzeichen ;-(|
Ergo müsste die Zeile ungefähr so lauten:
findstr /c:"Startig Hot CPU" "D:\Egaldatei.txt">"D:\Neue Datei.txt"
Ps:
hab ma gemacht was du sagtest und er kopierte 1:1 die zeilen aber alle ;D
ok genau das sollte beim Befehle "type" auch herauskommen.^^ Mit find oder findstr kannst du z.b keine "echten" (via regedit exportierten) .reg files durchsuchen, erst wenn die per Type in eine frische Datei geschrieben wurden.
Gruß
Hallo rhaziel!
Am Beispiel des Batches für die erste Zeile (und unter Berücksichtigung des - nicht so leicht als Sonderzeichen erkennbaren - "|"):
Mit
wird sicher gestellt, dass die Variable %Zeile% keinen Inhalt hat (und damit in Batch eigentlich nicht existiert).
Diese "for"-Schleife dient dazu, jede einzelne Zeile der in der Klammer angegebenen Datei zu lesen und als %%i zur Verfügung zu stellen, wobei "delims=" dafür sorgt, dass die Zeile am Stück bleibt, indem festgelegt wird, dass es kein Trennzeichen ("delimiter") gibt - nach dem "=" und vor dem Anführungszeichen steht genau: "nichts" . "usebackq" hat nur den Zweck, die Dateiangabe unter Anführungszeichen schreiben zu können.
Es wird für jede gelesene Zeile (außer, wenn sie leer ist) der nach dem "do" folgende Teil ausgeführt:
Durch die Abfrage, ob es schon eine Variable %Zeile% gibt, wird nur beim ersten Mal = für die erste Zeile (wo es die Variable sicher noch nicht gibt, siehe oben) der Inhalt von %%i in die Variable %Zeile% geschrieben - bei allen weiteren Durchläufen (für die weiteren Zeilen der Textdatei) ändert sich der Inhalt von %Zeile% nicht mehr (im Gegensatz zum Batch für die "letzte Zeile", da dort immer wieder der Variableninhalt überschrieben wird, sodass am Ende eben die letzte Zeile in %Zeile% enthalten ist).
Das Umleitungszeichen ">" sorgt dafür, dass die Ausgabe des folgenden Befehles in eine neu erstellte Datei "D:\Neue Datei.txt" geschrieben wird. Ausgegeben wird dabei nicht exakt die eingelesene Zeile, sondern es wird vorweg innerhalb dieser Zeile das Zeichen "|" durch "^|" ersetzt - das vorangestellte Caret "^" legt fest, dass das folgende Zeichen nicht "interpretiert" werden soll, sondern einfach (so, wie es da steht) auszugeben ist.
Grüße
bastla
Am Beispiel des Batches für die erste Zeile (und unter Berücksichtigung des - nicht so leicht als Sonderzeichen erkennbaren - "|"):
Mit
set Zeile=
for /f "usebackq delims=" %%i in ("D:\Egaldatei.txt") do ...
Es wird für jede gelesene Zeile (außer, wenn sie leer ist) der nach dem "do" folgende Teil ausgeführt:
... if not defined Zeile set "Zeile=%%i"
>"D:\Neue Datei.txt" echo %Zeile:|=^|%
Grüße
bastla