Top-Themen

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 VBS Script um Emailadressen aus einer TXT, CSV oder XLS-Datei zu lesen

Mitglied: Privex007

Privex007 (Level 1) - Jetzt verbinden

24.10.2014, aktualisiert 25.10.2014, 1090 Aufrufe, 5 Kommentare

Hallo zusammen,

ich benötige eine Möglichkeit meine Dateien (txt, csv und xls) zu durchforsten und meine Mailadressen in eine separate TXT-Datei abzulegen.
Ich weiß das man das mit einem VBS-Script wunderbar hinbekommt aber ich habe null Ahnung vom Coden.

Perfekt wäre natürlich wenn man einen ganzen Ordner durchsuchen kann.

Vielen Dank für eure Hilfe!

Gruß

Privex007
Mitglied: rubberman
24.10.2014 um 16:01 Uhr
Hallo Privex007, willkommen im Forum.

ich benötige eine Möglichkeit meine Dateien (txt, csv und xls) zu durchforsten und meine Mailadressen in eine separate TXT-Datei abzulegen.
Joa, wir schreiben auch mal ein paar Zeilen fertigen Code. Voraussetzung ist aber, dass du zumindest konkret wirst, wie die Daten vorliegen und wie sie Ausgegeben werden sollen. Außerdem: Benötigst du nur die gefundenen Adressen oder sind diese irgendwie mit Zusatzdaten verlinkt, die du auch brauchst?
Mit 2 hingeschmissenen Sätzen ohne Beschreibung und Beispielen wird das vermutlich nichts.

Grüße
rubberman
Bitte warten ..
Mitglied: Privex007
24.10.2014 um 16:13 Uhr
Da hast du Recht. Ein bisschen mehr hätte ich euch erzählen können.

Also hauptsächlich habe ich "txt"-Dateien die gefüllt sind mit einigem an Text (Briefe etc.). Daraus möchte ich nur die reine Emailadresse filtern "xxxx@xxx.xx". Manchmal habe ich auch "csv"- und "xls"-Dateien wo die Emailadressen in verschiedenen Spalten vorkommen.
Es sind keine Zusatzdaten verlinkt.

Ich habe einen Code-Schnipsel der mir ein bisschen was macht aber nicht vollständig:



Option Explicit

Dim objArgs, fso, strFile, strTestString
Dim strPattern, strAllMatches

Set objArgs = WScript.Arguments

ErrCheck objArgs.Count < 1, 1, "No argument specified."

strFile = objArgs(0)

Set fso = CreateObject("Scripting.FileSystemObject")
ErrCheck Not fso.FileExists(strFile), 1, "File supplied as argument cannot be found: '" & strFile & "'"

'# WScript.Echo "Checking file contents for email addresses: '" & strFile & "'" & vbCrlf

strPattern = "([\w-\.]+)@\w{2,}(\.\w{2,}){1,5}"

strTestString = fso.OpenTextFile(strFile, 1).ReadAll

strAllMatches = fGetMatches(strPattern, strTestString)

If strAllMatches <> "" Then
WScript.Echo strAllMatches
Else
WScript.Echo "-- None Found --"
End If

'# WScript.Echo vbCrlf & "End of " & WScript.ScriptName

Function fGetMatches(sPattern, sStr)
Dim regEx, retVal, sMatch, colMatches, temp
Set regEx = New RegExp ' Create a regular expression.
regEx.Pattern = sPattern ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.

Set colMatches = regEx.Execute(sStr) ' Execute search.

If colMatches.Count = 0 Then
temp = ""
Else
For Each sMatch In colMatches
temp = temp & sMatch & "¶"
Next
temp = Left(temp, Len(temp) - 1)
temp = Replace(temp, "¶", vbCrlf)
End If
fGetMatches = temp
End Function

Sub ErrCheck(blTest, iErrNum, sTxt)
Dim sErrText
If Not blTest Then Exit Sub
sErrText = "Error: " & sTxt
MsgBox sErrText, vbSystemModal + vbCritical, "Error in: " & WScript.ScriptName
WScript.Quit iErrNum
End Sub



Wenn ich meine "txt"-Datei auf die ausführbare "vb"-Datei per Drag and Drop ziehe, dann meldet er mir eine MessageBox mit leider nur einer einzigen Emailadresse. Ich bräuchte die Ausgabe in einer separaten "txt"-Datei und natürlich mit allen enthaltenen Adressen.

Habt ihr da Hilfe für mich?

Vielen Dank schonmal im Voraus!

Gruß

Privex007
Bitte warten ..
Mitglied: 114757
24.10.2014, aktualisiert um 16:52 Uhr
Hallo,
mit Powershell geht dies auch komfortabel und kurz, ohne jetzt mal xls Dateien zu beachten
(diese müsste man via Code öffnen und dann dann auswerten, geht aber auch mit etwas mehr Aufwand ...)
ginge es ungefähr so für alle txt und csv-Dateien in allen Unterordnern eines Ordners:
01.
$allMails = 'd:\all_mails.txt' 
02.
gci "D:\Ordner\*" -Include "*.csv","*.txt" -recurse | %{([regex]'(?i)[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}').matches((gc $_.Fullname)) | select -Expand Value | out-file $allMails -Append}
Gruß
jodel32
Bitte warten ..
Mitglied: rubberman
LÖSUNG 24.10.2014, aktualisiert 26.10.2014
Hallo Privex007,

lass mal folgendes Script in deinem Verzeichnis laufen:
01.
Option Explicit 
02.
Const strOutFile = "emailaddresses.txt" 
03.
 
04.
Const ForReading = 1, ForWriting = 2 
05.
Dim objFSO, objFolder, objInFile, objOutFile, objStream, objRegex, colMatches, _ 
06.
    objExcelApp, objWorkbook, objWorksheet, objCell, _ 
07.
    strFolderpath, strFilepath, strExtension, strContent, strMatch 
08.
 
09.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
10.
 
11.
Set objRegex = New RegExp 
12.
objRegex.Pattern = "\b[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\b" 
13.
objRegex.IgnoreCase = True 
14.
objRegex.Global = True 
15.
 
16.
Set objFolder = objFSO.GetFolder(objFSO.GetParentFolderName(WScript.ScriptFullName)) 
17.
 
18.
Set objOutFile = objFSO.OpenTextFile(strOutfile, ForWriting, True) 
19.
 
20.
Set objExcelApp = CreateObject("Excel.Application") 
21.
objExcelApp.Visible = False 
22.
 
23.
 
24.
For Each objInFile In objFolder.Files 
25.
  If Not StrComp(objInFile.Name, strOutfile, vbTextCompare) = 0 Then 
26.
    strFilepath = objInFile.Path 
27.
    strExtension = objFSO.GetExtensionName(strFilepath) 
28.
 
29.
    If StrComp(strExtension, "txt", vbTextCompare) = 0 Or StrComp(strExtension, "csv", vbTextCompare) = 0 Then 
30.
 
31.
      Set objStream = objInFile.OpenAsTextStream(ForReading) 
32.
      strContent = objStream.ReadAll 
33.
      Set colMatches = objRegex.Execute(strContent) 
34.
      If colMatches.Count <> 0 Then 
35.
        For Each strMatch In colMatches 
36.
          objOutFile.WriteLine strMatch 
37.
        Next 
38.
      End If 
39.
      objStream.Close 
40.
 
41.
    ElseIf StrComp(strExtension, "xls", vbTextCompare) = 0 Then 
42.
 
43.
      Set objWorkbook = objExcelApp.Workbooks.Open(strFilepath, 0, True) 
44.
      For Each objWorksheet In objWorkbook.Worksheets 
45.
        For Each objCell In objWorksheet.UsedRange.Cells 
46.
          strContent = CStr(objCell) 
47.
          If strContent <> "" Then 
48.
            Set colMatches = objRegex.Execute(strContent) 
49.
            If colMatches.Count <> 0 Then 
50.
              For Each strMatch In colMatches 
51.
                objOutFile.WriteLine strMatch 
52.
              Next 
53.
            End If 
54.
          End If 
55.
        Next 
56.
      Next 
57.
      objWorkbook.Close False 
58.
 
59.
    End If 
60.
 
61.
  End If 
62.
Next 
63.
 
64.
objExcelApp.Quit 
65.
objOutFile.Close

Grüße
rubberman

EDIT Zeile 45 ".Cells" hinzu (ändert nichts am Verhalten des Codes)
Bitte warten ..
Mitglied: Privex007
25.10.2014 um 17:53 Uhr
Hallo rubberman,

klappt perfekt. You are the best!

Dankeschön!

Gruß

Privex007
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Per Batch eine XLS-Datei in eine TXT-Datei umwandeln

Frage von skiing69Batch & Shell5 Kommentare

Hallo Wissende, ich möchte täglich automatisiert, ohne das Programm Excel zu öffnen, eine XLS-Datei in eine TXT-Datei (Feldtrennzeichen als ...

XML

CSV bzw. XLS Dateien in ein XML Schema einbinden

gelöst Frage von fisi-floXML3 Kommentare

Hallo allerseits, bisher habe ich von Lieferanten immer unterschiedliche Preislisten der Lieferanten im CSV oder XLS Dateiformat bekommen. Selbst ...

Batch & Shell

CSV Dateien auswerten mit Script

gelöst Frage von Crank69Batch & Shell8 Kommentare

Hallo Leute, habe ein Problem und hoffe ihr könnt mir helfen. Ich hoffe das die Bilder helfen bei meinem ...

VB for Applications

Via VBS Zellformate mehrerer XLS-Dateien ändern

Frage von elm-88VB for Applications6 Kommentare

Hallo zusammen, ich würde gerne eine etwas größere Menge an XLS-Dateien bearbeiten, am besten per VBS-Skript (bspw. über "send ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 23 StundenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 TagSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit18 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk13 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...