Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 3799 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel: Wenn Wert in Spalte A dann kopiere Zeile (8)

Frage von michi1983 zum Thema Microsoft Office ...

Windows 7
Kopiervorgang Logdatei (1)

Frage von Riddler123 zum Thema Windows 7 ...

KVM
KVM Starter Logdatei erstellen

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema KVM ...

Microsoft Office
Unterordner durchsuchen Excel VBA (1)

Frage von schwalbepilot zum Thema Microsoft Office ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(2)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (16)

Frage von Lynkon zum Thema TK-Netze & Geräte ...