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

Text dateien durchsuchen und 5 nachfolgene zeichen in neue datei kopieren

Frage Entwicklung Batch & Shell

Mitglied: Warzone2100

Warzone2100 (Level 1) - Jetzt verbinden

02.06.2010 um 11:36 Uhr, 4829 Aufrufe, 11 Kommentare

Hallöle,

habe nun etliches durchgelesen gesucht gefunden ausprobiert aber nichts war wirklich das was ich brauchte

ich habe ca. 8000 Textdateien die durchsucht werden wollen.

Und zwar sollen die Ergebnisse in eine neue txt Datei geschrieben werden.

Die zu durchsuchenden Dateien befinden sich alle in einem Ordner, und jedes text file beinhaltet auch irgendwo den Ausdruck "Fehler" (immer an anderer Stelle mal zwischen den Zeilen mal mitten in einer Zeile).

Nun möchte ich die Dateien so auslesen lassen, das die neue Text Datei alle Fehler ausgibt inklusive den 5 nachfolgenden Zeichen schön untereinander, so das jeder fehlercode seine eigene Zeile in der neuen Text Datei hat.

zum Beispiel:

gdg dg dgd gdg Fehler 12345 bla bla bla
Fehler 56789 gdg gd gddg bla bla
gdd gd gd gd bla bla Fehler 25689

Ausgabe Datei:

Fehler 12345
Fehler 56789
Fehler 25689

in den original Dateien kann es auch vorkommen das 2 oder 3-mal der ausdruck Fehler vorkommt mit einem Fehler Code, diese sollten natürlich auch in die neue Datei hinzukommen.

hoffe ihr versteht was ich möchte und könnt mir helfen

Vielen Dank schon einmal

Grüßle
Mitglied: bastla
02.06.2010 um 13:52 Uhr
Hallo Warzone2100 und willkommen im Forum!

Zum Testen (ich hab's nicht getan ):
01.
@echo off & setlocal 
02.
set "Dateien=D:\Ordner mit 8000 Dateien\*.txt" 
03.
set "Liste=D:\Fehlerliste.txt" 
04.
set "Suche=Fehler" 
05.
 
06.
set F=%temp%\Filtern.vbs 
07.
>%F%  echo E=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll,"%Suche%") 
08.
>>%F% echo For i=0 To UBound(E):If E(i)^<^>"" Then:WScript.Echo "%Suche%"^&Left(E(i),6):End If:Next 
09.
 
10.
del "%Liste%" 2>nul 
11.
for %%i in ("%Dateien%") do >>"%Liste%" cscript //nologo %F% "%%i"
Dein Beispiel lässt vermuten, dass 6 nachfolgende Zeichen auszugeben sind (das Leerzeichen kann nicht ignoriert werden) - falls doch nicht, einfach in der letzten Batchzeile korrigieren ...

Grüße
bastla

[Edit] Fehlende Maskierung für "<>" ergänzt [/Edit]
Bitte warten ..
Mitglied: Biber
02.06.2010 um 13:54 Uhr
Moin Warzone2100,

willkommen im Forum.

Du kannst diese Aufgabe einfach durch einen Oneliner vom CMD-Prompt aus lösen... es lohnt sich ja kaum, sich dafür aufwändig einen Batchdateinamen auszudenken und zu merken.

Beispiel am CMD-Prompt:
01.
-- meine Beispieldatei von oben gecopy&pasted 
02.
>type e:\daily\Forum\WarZone.txt 
03.
gdg dg dgd gdg Fehler 12345 bla bla bla 
04.
Fehler 56789 gdg gd gddg bla bla 
05.
gdd gd gd gd bla bla Fehler 25689 
06.
(=13:37:56  D:\temp=) 
07.
>setlocal enabledelayedexpansion & (for /f "delims=" %i in (e:\daily\forum\warzone.txt) do @set "x=%i" & for /f "tokens=1,2" %a in ("!x:*Fehler=Fehler!") do @echo %a %b) 
08.
Fehler 12345 
09.
Fehler 56789 
10.
Fehler 25689
Für mehrere Dateien kannst du dann der Eine-Datei-Angabe "e:\daily\forum\warzone.txt" in meinem Beispiel statt dessen in die Klammer setzen:

Streiche für Massenverarbeitung:
FOR /F "delims=" %i in (e:\daily\forum\warzone.txt) DO...
Setze für Massenverarbeitung:
FOR /F "delims=" %i in ('type e:\daily\forum\warzon*.txt') DO...

...zumindest sinngemäß, wenn die Dateien mit den Fehlermeldungen alle "warzonXyz123" oder ähnlich als Namenskonvention hätten.

Grüße
Biber

[Edit] Biber grüßt auch mittwochs alle Rechtsüberholer... *winkzzz*
@bastla: Upps, mit VBS brauch man/frau ja mehrere Zeilen für diesen pilpul.... ?!?..
[/Edit]
Bitte warten ..
Mitglied: bastla
02.06.2010 um 13:57 Uhr
@Biber
@bastla: Upps, mit VBS brauch man/frau ja mehrere Zeilen für diesen pilpul.... ?!?..
Der Oneliner setzt aber eigentlich voraus, dass "delayedExpansion" schon defaultmäßig aktiviert ist (zumindest genügt das "&" bei mir unter XP SP3 nicht, um in der Schleife bereits !x! nutzen zu können) ...

... aber in einer (etwas längeren ) Zeile ließe sich das per VBS durchaus machen (aber keiner von uns möchte die sehen [Edit] falls doch, siehe unten [/Edit]) ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
02.06.2010 um 14:18 Uhr
Moin bastla,

Zitat von bastla:
@Biber
Der Oneliner setzt aber eigentlich voraus, dass "delayedExpansion" schon defaultmäßig aktiviert ist ...
Jepp, natürlich .... aber wir sind doch auch nicht bei der Computerbild oder auf dem Ponyhof....

Also gut, in der Registry sollte es so aussehen.
01.
>reg query "HKCU\software\microsoft\Command Processor" 
02.
 
03.
! REG.EXE VERSION 3.0 
04.
 
05.
HKEY_CURRENT_USER\software\microsoft\Command Processor 
06.
    CompletionChar      REG_DWORD       0x9 
07.
    DefaultColor        REG_DWORD       0x74 
08.
    EnableExtensions    REG_DWORD       0x1 
09.
    PathCompletionChar  REG_DWORD       0x9 
10.
    DisableUNCCheck     REG_DWORD       0x1 
11.
    DelayedExpansion    REG_DWORD       0x1      <--------- DER HIER ist gemeint! 
12.
    AutoRun     REG_SZ  D:\Biber\cmdstartup.bat
... aber in einer (etwas längeren ) Zeile ließe sich das per VBS durchaus machen (aber keiner von uns möchte die sehen ) ...

Bestenfalls auf einem Ultra-Wide-HDTV-Flachbildschirm.... oder einem Laufband.... oder einer Kabeltrommel aufgerollt...

Grüße zurück
Biber
Bitte warten ..
Mitglied: Warzone2100
02.06.2010 um 14:33 Uhr
Uii vielen Dank.

leider sagt der mir immer ">" wäre syntaktisch an dieser stelle nicht verarbeitbar.

Liebe Grüßle
Bitte warten ..
Mitglied: bastla
02.06.2010 um 15:36 Uhr
Hallo Warzone2010!
leider sagt der mir immer ">" wäre syntaktisch an dieser stelle nicht verarbeitbar.
... und das zurecht - ich korrigiere mal oben ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
02.06.2010 um 15:39 Uhr
@Biber
Dann ist
setlocal enabledelayedexpansion & 
als Kommentar zu werten (immerhin gibt's bei Dir einen) ...

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
02.06.2010 um 16:08 Uhr
Moin,

Falls in einer Zeile Mehrmals Fehler vorkommt und in anderen gar nicht, muss der Einzeiler für CMD Fenster ein bisschen modifiziert werden.

CMD Fenster mit cmd /v:on starten schaltet auch Verzögerte Variablen Auflösung ein.

01.
setlocal enabledelayedexpansion & (for /f "delims=" %i in ('findstr "Fehler" "e:\daily\forum\warzone.txt"') do @set "x=%i" & @for %a in ("!x:Fehler =Fehler_!") do @for %j in (%~a) do @for /f "tokens=1,2 delims=_" %k in ("%j") do @if not ""=="%l" echo %k %l)
"e:\daily\forum\warzone.txt" ist Deine Textdatei bzw mit Platzhalter ? oder * für mehrere.
Bitte warten ..
Mitglied: Warzone2100
02.06.2010 um 16:43 Uhr
Zitat von bastla:
Hallo Warzone2010!
> leider sagt der mir immer ">" wäre syntaktisch an dieser stelle nicht verarbeitbar.
... und das zurecht - ich korrigiere mal oben ...

Grüße
bastla

whhoohoooo super vielen dank das erleichtert mir die arbeit enorm *freu*

Vielen dank
Bitte warten ..
Mitglied: Biber
02.06.2010 um 16:54 Uhr
[OT]
@ bastla
Zitat von bastla:
@Biber
Dann ist setlocal enabledelayedexpansion & als Kommentar zu werten
Jepp, stimmt... den brauche ich bei meiner Registry-Voreinstellung nicht... funktioniert ohne Vorankündigung.
(immerhin gibt's bei Dir einen) ...
Wer im Glashaus schrotet..

@pieh-ejdsch
Die nächsten Oneliner sollten wir uns in einem CinemaXX/Multiplex ansehen..

Grüße
Biber
Bitte warten ..
Mitglied: bastla
02.06.2010 um 17:16 Uhr
Hallo Biber und PH!
Die nächsten Oneliner sollten wir uns in einem CinemaXX/Multiplex ansehen..
Ich bring dann den mit :
01.
Set fso=CreateObject("Scripting.FileSystemObject"):Set L=fso.CreateTextFile("D:\Fehler.txt"):For Each F In fso.GetFolder("e:\daily\forum").Files:For Each E In Split(F.OpenAsTextStream.ReadAll,"Fehler"):If E<>"" Then:L.WriteLine "Fehler"&Left(E,6):End If:Next:Next
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft Office
Excel Dateien durchsuchen und Werte einzeln in neue Excel Datei auslesen (1)

Frage von krischanii zum Thema Microsoft Office ...

VB for Applications
gelöst VBA Text mit Format übertragen und Zeichen ergänzen (11)

Frage von Dau12345 zum Thema VB for Applications ...

Batch & Shell
Bash Script soll neue Datei erzeugen (2)

Frage von SpeakerST zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...