2017-08-30 2 views
1

Grundsätzlich versuche ich zu automatisieren Senden einer E-Mail angehängt mit einer Datei durch Ergreifen von Informationen aus diesem Dateinamen, um die E-Mail zu generieren, die gesendet wird. Ich habe auf der Website gesucht und nichts Ähnliches gefunden, daher tut es mir leid, wenn ich eine wiederholte Frage erstelle. Ich bin versucht, dies zu tun in Powershell 4.0Regex Auswählen jeder Großbuchstaben nach einem Komma

Das Format der E-Mails [email protected] so für mich werden würde es [email protected]

Wo sein I ist Stuck: Regex ich den Ausdruck erstellt habe \b\w*(?=,), die in dem Szenario einer Datei mit dem Namen Getz, Jacob 2017.9.4.pdf die Nachnamen auf Kräfte holen werden Hölle und regexstorm.net mag ich, aber die Spickzettel, die ich oben schaue, wenden nicht wirklich richtig an, wenn ich versuche, Kapital nach dem Komma zu erhalten (das ist, weil einige Leute Namen wie Jo-Ann haben). Das ist wirklich, wo ich die Hilfe brauche, ich habe noch nicht das volle Wissen in Scripting/Automation, um wirklich Google zu googeln oder das spezifische eines Themas zu erforschen. Unten ist, wie ich den letzten Namen holte, ich bin nicht viel weiter gekommen, als ich gerade Pfade änderte, um die Automatisierung so zu strukturieren, und ich werde auf dem beschriebenen Schritt aufgehängt.

$myFolder = 'C:\Users\jgetz\Desktop\Testfolder' 

Foreach ($file in Get-ChildItem $myFolder) 
{ 
    $myFile = $file.name 
    $myFile2 = $myFile -Match "\b\w*(?=,)" 
    $Matches.Values | Out-Host 
} 
+2

Was passiert, wenn Sie Julian Getz beschäftigen? Werden Personen E-Mails mit Dokumenten erhalten, die für jemand anderen bestimmt sind? Nur etwas zum Nachdenken ... –

Antwort

0

starten, indem Sie den Dateinamen Aufspalten von ,:

$filename = 'Getz, Jacob 2017.9.4.pdf' 

# Split file name into two parts on first , 
$lastname,$rest = $filename -split ',',2 

Jetzt haben wir den Nachnamen squared bekommen. Dann verwenden die -creplace Operator (der c vor replace bedeutet, es ist Fall empfindlichen) jede nicht-Großbuchstaben von dem Rest des Stranges zu entfernen:

$firstinitials = $rest -creplace '[^\p{Lu}]' 

\p{Lu} ist .NET regulären Ausdruck für „Unicode L etters, u ppercase ". [^\p{Lu}] negiert es.

Alles was Sie jetzt tun müssen, ist die E-Mail-Adresse zu konstruieren:

$mailaddress = "[email protected]" 
+0

Vielen Dank, ich schätze es, dass Sie es auflösen, damit ich es besser verstehen kann, da es irgendwann einen Fehler geben wird, wenn die Kapazität steigt, aber es ist alles eine Anstrengung, einen Ausgangspunkt zu bekommen so viel wie möglich lernen und begreifen, um ein Verständnis zu bekommen. Nach dem, was James gesagt hat, werde ich sie manuell in einem separaten Ordner erledigen, da es lange dauern wird, bis dieses Szenario in diesem Maßstab einer Firma außer Kontrolle gerät. – JayGetz

+0

FYI '[^ \ p {Lu}}' = '\ P { Lu} '. –

+0

@ WiktorStribiżew Danke, hatte '\ P' komplett vergessen –

Verwandte Themen