vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Verzeichnisse durchsuchen, Dateiinhalte filtern 
Autor: razzzer530i
Datum: 13.09.16 16:55

Hallo Leute, habe bis jetzt einiges in VB.NET geschrieben aber verzweifle an einer Sache.
Ich möchte Ein Verzeichnis inklusive Unterverzeichnissen nach *.0tx Dateien durchsuchen.

Der Inhalt der Dateien sieht so aus:

********TEXTDATEI********
....
From: <absender@email.com
To: "Hans Dieter" <hansdieter@web.de>,
"Hans Ulrich" <hansulrich@web.de>,
"Du da" <duda@gmx.de>,
.....
********TEXTDATEI********

Ich möchte mir die Empfänger raussuchen, doppelte Einträge ignorieren und wenn die anzahl der Empfänger größer als 25 ist, den Namen der datei in einer txtdatei speichern.

Code habe ich:

    Sub GetFiles(ByVal path As String)
        Dim sFile As String
        Dim sPath As String
        Dim Empfaenger As String
        Dim index1 As Integer
        Dim index2 As Integer
        Dim index3 As Integer
        Dim index4 As Integer
        Dim index5 As Integer
 
 
        sPath = "Pfad"
        For Each sFile In IO.Directory.GetFiles(sPath, "*.0tx", _
          IO.SearchOption.AllDirectories)
            Try
                For Each line In IO.File.ReadLines(sFile)
                    If line.Contains("To:") Then
                        index2 = line.IndexOf("<")
                        index3 = line.IndexOf(">", index2)
                        Empfaenger = line.Substring(index2 + 1, index3 - index2 _
                          - 1)
                        Dim eins As Stringd
                        eins = vbCrLf & vbCrLf & vbCrLf & vbTab & sFile & _
                          vbCrLf & Empfaenger
                        My.Computer.FileSystem.WriteAllText( _
                        "C:\Users\Anwender\Desktop\Testlesen.txt", eins, True)
                        Debug.Print(vbCrLf & sPath & vbTab & sFile)
 
                    End If
 
                Next
            Catch ex As Exception
            End Try
 
        Next
 
 
 
    End Sub
bringt mir nur leider gar nichts und ich verstehe nicht genau wie es richtig gehen könnte.

Bitte um eure Hilfe!
Danke!

PS: Programmiere mit VB 2010 Express.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verzeichnisse durchsuchen, Dateiinhalte filtern 
Autor: Manfred X
Datum: 13.09.16 19:32

Hallo!

Offenbar stehen in einer Datei mehrere Empfänger.
Wodurch ist die Liste der Empfänger in den Dateien begrenzt? (Zeichenfolge).

Verwende eine Dictionary(Of String, Integer).
Ist ein gefundener Empfänger noch nicht in der Dictionary (ContainsKey)
wird der Name als Key für einen neuen Dict.-Entry verwendet und der
Value = 1 gesetzt.
Ist der gefundene Empfänger bereits in der Dictionary vorhanden,
wird der Value um eins erhöht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verzeichnisse durchsuchen, Dateiinhalte filtern 
Autor: razzzer530i
Datum: 14.09.16 07:16

An sich ganz gut Manfred, mir fehlt leider das Wissen das in einen _Code zu formulieren.....Bin quasi blutiger Anfänger und verstehe nicht welche Befehlsfolge ich nutzen muss..
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verzeichnisse durchsuchen, Dateiinhalte filtern 
Autor: Manfred X
Datum: 14.09.16 11:04

Wie der Inhalt Deiner Dateien genau aufgebaut ist,
weiß ich nicht.
So oder ähnlich könnte es funktionieren:
Public Sub FindFiles()
 
   Dim outfiles As New List(Of String)
 
   For Each file As String In IO.Directory.EnumerateFiles("....", "....")
 
      'Dateiinhalt lesen (Zeilen)
      Dim lines() As String = IO.File.ReadAllLines(file)
 
      Dim names As New Dictionary(Of String, Integer)
      Dim tox As Boolean = False
      Dim st, en As Integer, name As String
 
      'Datei-inhalt durchsuchen
      For i As Integer = 0 To lines.Length - 1
         'Anschriftenblock startet?
         If lines(i).StartsWith("To: ") Then tox = True
 
         If tox Then
            st = lines(i).IndexOf("<")
            If st >= 0 Then
               en = lines(i).IndexOf(">", st)
               If en >= 0 Then
                  'Empfänger-Name gefunden / registrieren
                  name = lines(i).Substring(st + 1, en - st - 1)
 
                  If names.ContainsKey(name) Then
                     names(name) = names(name) + 1
                  Else
                     names.Add(name, 1)
                  End If
               End If
            End If
         End If
      Next i
 
      If names.Count > 25 Then outfiles.Add(file)
   Next file
 
   If outfiles.Count > 0 Then
      IO.File.WriteAllLines _
         ("....", outfiles.ToArray)
   End If
 
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verzeichnisse durchsuchen, Dateiinhalte filtern 
Autor: Franki
Datum: 03.10.16 02:41

Hallo,

du sagst du bist Anfänger, stellst abe eine Frage dessen Antworten du dann nicht verstehst.

Warum begibst du dich als Anfänger an solche Aufgaben die eigentlich fortschrittliche Kenntnisse erfordern?

Ein Grundschüler lernt ja auch nicht die Integralrechnung. Ich wundere mich immer wieder warum Anfänger nach ein paar Tagen/Wochen/Monaten glauben sie könnten durch Fragen in Foren, Suche im Web, usw. usw. den Lernprozess beim Programmieren überspringen.

Klar kann man das machen, aber das Programmieren besteht doch darin eigene Ideen umsetzen zu können und auf Anforderungen von sich selbst, dem Arbeitgeber oder Kunden reagieren zu können. Mit reiner Kopiererei schafft man das nie und selbst wenn, dann nich so wie man eis eigentlich möchte.

Also Fazit: Grundlagen lernen ist wichtig und unumgänglich.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel