| |
Suche Visual-Basic CodeVerzeichnisse 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. | |
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. | |
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.. | |
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 | |
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 | |
| 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 |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
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
|
|