Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

bestimmte Zeile aus .txt oder .log kopieren per batch vbs

Frage Entwicklung

Mitglied: rhaziel

rhaziel (Level 1) - Jetzt verbinden

19.09.2008, aktualisiert 18.10.2012, 9193 Aufrufe, 17 Kommentare

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
Mitglied: 60730
19.09.2008, aktualisiert 18.10.2012
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ß
Bitte warten ..
Mitglied: bastla
19.09.2008 um 11:47 Uhr
Hallo rhaziel!

Als Batch etwa so:
01.
findstr /c:"Text, der nur in der bestimmten Zeile enthalten ist" "D:\Egaldatei.txt">"D:\Neue Datei.txt"
Für's Versenden per Mail wird gerne "blat" verwendet ...

Grüße
bastla

[Edit] @TimoBeil: Na geht doch ... [/Edit]
Bitte warten ..
Mitglied: rhaziel
19.09.2008 um 12:16 Uhr
ach so einfach na den gehts ja danke für die sehr schnellen antworten mit blat kenn ich mich aus ich probiers ma

also ich habs ma so gemacht wie du geschrieben hast aber bei mir kommt immer ne neue leere txt raus egal was ich nach dem c: eingegeben habe obs bei der Quelle.txt nun der anfang ende oder mitte einer zeile war immer in der Ausgangs.txt nichts drin
Bitte warten ..
Mitglied: 60730
19.09.2008 um 12:53 Uhr
servus,

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
Bitte warten ..
Mitglied: bastla
19.09.2008 um 13:03 Uhr
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
Bitte warten ..
Mitglied: rhaziel
19.09.2008 um 13:57 Uhr
@Timobell

hab ma gemacht was du sagtest und er kopierte 1:1 die zeilen aber alle ;D

also ich hab mir nen paar threads angeschaut und 1 brauchbare batch gefunden (naja die einzige die funktioniert)aber die war denke ich für was anderes da ich bekomme nun immer eine output.txt mit bestimmten zeilen aus meiner Quelle.txt
ich werde mich ma bei der bissl eingucken und ausprobieren!
perfekt wäre es natürlich wenn mir schnell einer erklärt also nochma zudem was ich brauche:
"Ich möchte von einem protokoll was zeitlich angeordnet ist immer die neuesten also die ersten oder letzten log eintragungen kopieren und in eine neue txt einfügen"
das mit zeitlicher anordnung is auch son ding möchte eher darüber gehen das die batch datei kapiert :das ist zeile 1 also kopier ich zeile 1" ich hoffe ja das das relativ einfach umsetzbar ist

achja ich finds klasse das man so schnell antworten hier bekommt vielen dank schonma in vorraus ;D
Bitte warten ..
Mitglied: bastla
19.09.2008 um 14:03 Uhr
Hallo rhaziel!

Erste Zeile:
01.
@echo off & setlocal 
02.
set Zeile= 
03.
for /f "usebackq delims=" %%i in ("D:\Egaldatei.txt") do if not defined Zeile set "Zeile=%%i" 
04.
>"D:\Neue Datei.txt" echo %Zeile%
Letzte Zeile:
01.
@echo off & setlocal 
02.
for /f "usebackq delims=" %%i in ("D:\Egaldatei.txt") do set "Zeile=%%i" 
03.
>"D:\Neue Datei.txt" echo %Zeile%
Wenn Du jeweils
01.
>>"D:\Neue Datei.txt" echo %Zeile%
als letzte Zeile verwendest, wird die Zeile an eine ev schon bestehende "D:\Neue Datei.txt" angefügt.

Grüße
bastla
Bitte warten ..
Mitglied: rhaziel
19.09.2008 um 14:34 Uhr
hmm es kommt immer in der output.txt das gleiche mit den batches

"ECHO ist ausgeschaltet (OFF)."
Bitte warten ..
Mitglied: bastla
19.09.2008 um 14:48 Uhr
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
Bitte warten ..
Mitglied: rhaziel
22.09.2008 um 07:29 Uhr
hmm also der inhalt ist bis jetz relativ egal sind aber keine sonderzeichen oder dergleichen dabei ich würde halt nur gerne wissen wie es geht

vielleicht mal für ne log datei von mein teamspeak server zb oder so ;D

hmm also was hier steht funktionierte bis jetz leider nicht(oder ich bin zu blöde!)

vielleicht hilft es euch wenn ich zb nur die neuesten sagen wir mal 2-3 zeilen in eine neue txt datei packe

ich bin zz soweit das ich es hinbekomme aus einer txt datei mit definierten anfang und ende das was dazwischen ist in eine neue txt zu schreiben blos das is relativ blöde wenn man aus einer txt datei die sich dauernd verändert was zu machen
Bitte warten ..
Mitglied: Biber
22.09.2008 um 08:35 Uhr
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?
...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
Bitte warten ..
Mitglied: rhaziel
22.09.2008 um 08:45 Uhr
Ok alles klar sry wegen meiner Formulierung ist halt noch früh ;D

warum ich weder Punkt und Komma benutze ist klar:ich bin Faul und ich empfand es noch nie anstrengend einen Text ohne dergleichen zu lesen.

So zum Thema also ein kleiner ausschnitt aus der txt datei wo ich es zz versuche:
Anfang
Sep, 04 - 13:34:04 | Startig Hot CPU
Sep, 04 - 13:34:04 | Initializing DefectTrack Engine version 2.2.0
Sep, 04 - 13:34:04 | Loading options...
Sep, 04 - 13:34:04 | Reading system info...

Sep, 04 - 13:34:06 | CPU: AMD Athlon(tm) XP 2400+

Sep, 04 - 13:34:06 | Speed: 1999MHz

Sep, 04 - 13:34:06 | -1

Sep, 04 - 13:34:06 | 64
Ende
Ich bin zz soweit das er mir diese Zeilen per batch zur Output.txt kopiert aber nur mit definierten Anfang und Ende wie man sieht ich möchte aber gerne das er mir nur die ersten 2-3 zeilen kopiert
Bitte warten ..
Mitglied: 60730
22.09.2008 um 08:57 Uhr
Servus,

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:

01.
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ß
Bitte warten ..
Mitglied: rhaziel
22.09.2008 um 09:18 Uhr
Ok tut mir leid hast Recht aber
ich bin noch unerfahren in batch etc möchte aber gerne lernen und du hast mir grade schon einmal geholfen.

also wie ich grade "verstanden" habe bezieht sich findstr /c:"...."
auf der zu kopierenden Zeile X die man wohl wie du geschrieben hast genau bezeichnen muss
"D:\Egaldatei.txt" bezieht sich klar auf die ausgangsdatei die ich bearbeiten will
>wo es hinkopiert werden will alles klar

nun ich möchte gerne bei einer .txt datei die erste Zeile die sich ständig verändert kopieren also brauche ich wie ich es mir denke
eine Definition für findstr /c"ersteZeile"
Ich habe leider keine ahnung ob es sowas überhaupt gibt oder ob es mit Batch überhaupt möglich ist!
Bitte warten ..
Mitglied: Biber
22.09.2008 um 09:30 Uhr
Moin rhaziel,

die erste Zeile einer Textdatei unabhängig vom Inhalt hat bastla weiter oben beschrieben.
Am 19.09.2008 um 14:03:20 Uhr.

die zweite, dritte etc. Zeile kannst Du analog abfackeln.

Grüße
Biber
Bitte warten ..
Mitglied: rhaziel
22.09.2008 um 09:33 Uhr
ach alles klar vielen dank Bastla und Biber
wenn ihr lust und zeit hättet könntet ihr mir bitte erklären was die befehle nützen also im einzelnen das ich auch mal den Grundprozess verstehe oder mir einen hilfreichen link schicken?

ahh ich habs nun verstanden warum bastla seine batch am anfang nicht lief ich habe immer eine log datei verwendet mann muss es aber mit einer txt datei benutzen das kapier ich nun denke mal jetz bekomme ich es hin

nochma vielen dank an die die mir ne antwort geschrieben haben !
Bitte warten ..
Mitglied: bastla
22.09.2008 um 14:43 Uhr
Hallo rhaziel!

Am Beispiel des Batches für die erste Zeile (und unter Berücksichtigung des - nicht so leicht als Sonderzeichen erkennbaren - "|"):

Mit
01.
set Zeile=
wird sicher gestellt, dass die Variable %Zeile% keinen Inhalt hat (und damit in Batch eigentlich nicht existiert).

01.
for /f "usebackq delims=" %%i in ("D:\Egaldatei.txt") do ...
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:
01.
... if not defined Zeile set "Zeile=%%i"
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).

01.
>"D:\Neue Datei.txt" echo %Zeile:|=^|%
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
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...