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

LOGDATEI DURCHSUCHEN UND DARAUFFOLGENDE ZEILEN KOPIEREN

Frage Entwicklung VB for Applications

Mitglied: lenzmann

lenzmann (Level 1) - Jetzt verbinden

24.08.2012, aktualisiert 05:44 Uhr, 3770 Aufrufe, 10 Kommentare

Bin ein blutiger Anfänger und für jede Hilfe sehr froh.

Habe verschiedene Logfiles, welche unterschiedliche grössen haben können.Jedes files hat abschnitte welche aus 15 zeilen bestehen und immer drei mal die gleiche 18 stellige nummer haben.(Druckbefehl für eine Labeldrucker).

Möchte nu8n mittels VBA ein File mit einer Nummer, von der ich weiss das sie vorkommt, durchsuchen und bei der ersten Zeile die diese nummer hat stoppen, drei zeilen nicht beachten und dann sechs Zeilen kopieren.


die files sehen ungefähr so aus:




2011-10-01 10:25:54.133 MPP INFO Warten auf Antwort des Printers
2011-10-01 10:25:54.742 MPP INFO Printer zugewiesen: false
2011-10-01 10:25:54.742 MPP INFO PrinterData_inquiry zum Markpoint Printer gesendet
2011-10-01 10:25:54.742 MPP INFO InquiryBefehl: !S1

2011-10-01 10:25:54.742 MPP INFO Warten auf Antwort des Printers
2011-10-01 10:25:54.945 MPP INFO Received data:
2011-10-01 10:25:54.945 MPP INFO Printer zugewiesen: false
2011-10-01 10:25:54.961 BPort INFO Opening port to Mettler: COM3
2011-10-01 10:25:54.992 METT INFO BalanceData_inquiry zur Waage gesendet
2011-10-01 10:25:54.992 METT INFO InquiryBefehl: I2

2011-10-01 10:25:54.992 METT INFO Warten auf Antwort der Waage
2011-10-01 10:25:55.195 METT INFO BalanceData_inquiry zur Waage gesendet
2011-10-01 10:25:55.195 METT INFO InquiryBefehl: I2
011-10-01 10:26:01.648 openPPort INFO Opening port to Printer {0} COM6
2011-10-01 10:26:02.414 toprinter INFO sent to printer...123456789123456789 .....................DAS IST DIE ERSTE
LEERZEILE
LEERZEILE
LEERZEILE
!C ....von hier an kopieren
!Y24 60
!Y35 10
!Y42 1
!F C S 55 840 C 240 4 43 " (00) 123456789123456789 (413) ".........................HIER DIE ZWEITE
!F S S 15 930 C 10 12 94029" (00) 123456789123456789 (413) ".......................UND DIE DRITTE
!P2 .... hier aufhören zu kopieren

Hoffe das irgend jemand mir helfen kann

gruss lee
Mitglied: bastla
24.08.2012, aktualisiert 25.08.2012
Hallo lenzmann und willkommen im Forum!

Gundsätzlich sähe das für Dein Beispiel so aus:
01.
Ein = "D:\Dein.log" 
02.
Aus = "D:\Kopie.txt" 
03.
Such = "123456789123456789" 
04.
Abstand = 3 'Zeilen nach Suchbegriff überspringen 
05.
Anzahl = 6' Zeilen kopieren 
06.
 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
T = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline) 
09.
Do While i < UBound(T) - Abstand - Anzahl 'nur bis Dateiende - Abstand - Anzahl Zeilen lesen 
10.
    If InStr(T(i), Such) >0 Then 'Suchbegriff in Zeile? 
11.
        i = i + Abstand 'Zeilen überspringen 
12.
        For j = 1 To Anzahl 'angegebene Anzahl von Zeilen ... 
13.
            i = i + 1 'nächste Zeile 
14.
            Ausgabe = Ausgabe & vbNewline & T(i) '... der Ausgabe hinzufügen (mit Zeilenschaltungen) 
15.
        Next 
16.
    End If 
17.
    i = i + 1 'nächste Zeile 
18.
Loop 
19.
fso.CreateTextFile(Aus).Write Mid(Ausgabe, 3) 'ohne Leerzeile am Anfang in Datei schreiben
Grüße
bastla
Bitte warten ..
Mitglied: lenzmann
24.08.2012 um 15:59 Uhr
vielen dank werde das heute abend sofort ausprobieren,

lee
Bitte warten ..
Mitglied: lenzmann
25.08.2012, aktualisiert um 14:18 Uhr
habe es jetzt getestet
funktioniert genau wie es mir vorgestellt habe,
Bitte warten ..
Mitglied: bastla
25.08.2012, aktualisiert um 10:23 Uhr
Hallo lenzmann!
Wenn sie aber irgenwo in der mitte stehen, bleibt das resultat null
Kann ich mir zwar nicht erklären (da der Ablauf des Scripts ja immer gleich ist), aber versuch es mal mit dieser Variante:
01.
Ein = "D:\Dein.log" 
02.
Aus = "D:\Kopie.txt" 
03.
Such = "123456789123456789" 
04.
Abstand = 3 'Zeilen nach Suchbegriff überspringen 
05.
Anzahl = 6' Zeilen kopieren 
06.
 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
Set DateiEin = fso.OpenTextFile(Ein) 
09.
Set DateiAus = fso.CreateTextFile(Aus) 
10.
Do While Not DateiEin.AtEndOfStream 'alle Zeilen der Eingabedatei verarbeiten 
11.
    Zeile = DateiEin.ReadLine 'Zeile einlesen 
12.
    If InStr(Zeile, Such) > 0 Then 'Suchbegriff in Zeile? 
13.
        For i = 1 To Abstand '"Abstand" Zeilen ... 
14.
            DateiEin.SkipLine '... überspringen 
15.
        Next 
16.
        For i = 1 To Anzahl '"Anzahl" Zeilen ... 
17.
            DateiAus.WriteLine DateiEin.ReadLine '... einlesen und in die Ausgabedatei schreiben 
18.
        Next 
19.
    End If 
20.
Loop 
21.
MsgBox "Fertig."
Bitte warten ..
Mitglied: lenzmann
25.08.2012, aktualisiert um 14:18 Uhr
vielen dank für deine hilfe lee
Bitte warten ..
Mitglied: lenzmann
25.08.2012, aktualisiert um 14:19 Uhr
habe noch vergessen zu sagen das ich folgende Datentypen deklariert habe

Dim Aus As String
Dim Ein As String
Dim Such As String
Dim Abstand As Integer
Dim Anzahl As Integer
Dim fso As Object
Dim DateiEin As Object
Dim DateiAus As Object
Dim Zeile As Object
Dim WScript As Object

lee
Bitte warten ..
Mitglied: bastla
25.08.2012 um 10:22 Uhr
Hallo lenzmann!

Eigentlich war aber die Rede von VBA (bzw ist das Script als VBS geschrieben; ich ändere die letzte Zeile auf "MsgBox", dann passt's für beide) und nicht von Visual Basic - also versuch es am einfachsten, indem Du den Code als ".vbs" speicherst und ausführst ...
Die Deklarationen kannst Du Dir sparen (oder richtig vornehmen - "Zeile" ist ein String und "WScript" wird keinesfalls benötigt).

Grüße
bastla
Bitte warten ..
Mitglied: lenzmann
25.08.2012, aktualisiert um 14:19 Uhr
Guten Morgen
Tut mir leid dass ich mich falsch ausgedrückt habe.
Der Script , als VBS gestartet läuft exact so wie ich es mir vorgestellt habe.



Lee
Bitte warten ..
Mitglied: bastla
25.08.2012 um 13:30 Uhr
Hallo lenzmann!

Schrei doch bitte Deine Ideen nicht so raus ...
Ich hoffe, Du findest es auch von mir nicht unverschämt, Dich darauf hinzuweisen, dass Du das Lesen und Schreiben von Textdateien noch oft brauchen wirst und es daher vorteilhaft sein dürfte, Dir das (auch die Online-Hilfe widmet sich diesem Thema) selbst zu erarbeiten - und viel mehr passiert in dem Script ja nicht (und schon gar nicht kommentarlos ) ...

Grüße
bastla
Bitte warten ..
Mitglied: lenzmann
25.08.2012 um 14:16 Uhr
ok werde es mal versuchen, trotzdem vielen dank und noch ein schönes wochende

lee
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Datenbanken
gelöst DB2 Daten in Windows DB2 kopieren (1)

Frage von Emheonivek zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

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

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

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

Frage von MegaGiga zum Thema Hardware ...