Jump to content

thomas1972

Members
  • Gesamte Inhalte

    6
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von thomas1972

  1. Ich habe selbst ein wenig mich versucht.

    soweit so gut, nur ist wohl die Schleife ein wenig falsch.

     

    Es wir der Fehler

    "..Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.., .."

    genau in der Anzahl des Wert $maxaddachment angezeigt, die darauf zu erstellenden Mails werden sauber erstellt.

    Hier als Max Wert 2  = $maxaddachment Anhänge zum testen.

     

    Nicht ganz Sauber im Aufbau, ist aber mein zweites mal wie ich mich mit PowerShell auseinander setze
    Vielleicht könnt Ihr mir hier behilflich sein?

     cls
    #Ausleseverzeichnis tif
    $inputDir = "x:\TIFF zum einlesen Scanntool\"
    
    #Pfad mail erfolgreich versendet -File
    $move_mail_item = "X:\Sekretariat\"
    
    #Mail Text vorlage
    $mailtext = "X:\Textvorlagen\skoda-sekretariat.txt"
    
    
    $pdfs = get-childitem $inputDir -recurse | where name -like "*GEKO*.tif"
    
    #Anzahl maximler Anhänge je Mail
    $maxaddachment = 2
    
    
    $anzahl= 0
    foreach ($pdf in $pdfs) {
        $tif = Join-Path -Path $inputDir -ChildPath ($tifBaseName + '.tif')
        $tif = "" + $pdf
        Write $tif
        
    
        $tif = $inputDir + $tif
        $pdf_to_move = $inputDir + $tif
       
                 if ($anzahl -eq$maxaddachment) {
                    $Mail.display()
                  
                    $ol = New-Object -comObject Outlook.Application  
                    $mail = $ol.CreateItem(0)
                    $mail.Recipients.Add("xxx@xxx.de")
                    $mail.Subject = "Scan Anträge für Archiv"
                    $mail.Body = Get-Content -Path $mailtext -Raw
                    $anzahl=0
                    
                    
                 }
    
        if ($anzahl -lt$maxaddachment) {
                 $mail.Attachments.Add($tif)
                 $anzahl= $anzahl +1
                 write $anzahl
                 #Move-Item -Path $tif -Destination $move_mail_item
    
        }
        
      
    }
    
        $Mail.display()
        

     

  2. vor 15 Minuten schrieb BOfH_666:
    vor 16 Minuten schrieb thomas1972:

    .... nur wird VBA nicht mehrlässig sein

    was heißt das?

    es dürfen bei uns keine VBA Scripte mehr ausgeführt werden. Powershell ist die mir einzig gebliebene Möglichkeit gewisse dinge zu automatisieren

     

    vor 15 Minuten schrieb BOfH_666:
    vor 16 Minuten schrieb thomas1972:

    (jeweils mit maximal 30 Elementen)

    ... sind 30 Elemente garantiert immer so "klein", dass es auch möglich ist, sie per Anhang mit einer Mail zu vesenden?

    Ja sind Sie, sollten die Anhänge mal grösser sein, kann ich anhand der Variable die Anzahl noch selbst anpassen

     

    vor 15 Minuten schrieb BOfH_666:
    vor 16 Minuten schrieb thomas1972:

    Es soll im Verzeichnis C:\temp\Geko Anträge alle Anhänge  in einer Mail versenden,

    Wäre nicht ein Upload auf einen geschützten Ablage-Ort und eine passende Info-Mail der professionellere Weg?

    Leider nein, da die Daten extern verarbeitet werden, ist außer per Mail, kein anderer Austausch möglich. :-(

     

     

  3. Guten Morgen,

     

    ich bekomme jeden Tag x Anhänge in ein Verzeichnis gestellt, welche prüft werden müssen. Nach Prüfung sollen diese weitergeleitet werden. Leider kann ich nur eine gewisse Größe an Mails versenden daher ein Limit an Anzahl von Anhängen).

    Hier habe ich mir über VBA etwas "gebastelt", was bisher auch immer gut funktionierte, nur wird VBA nicht mehr zulässig sein und ich muss den Umweg über Powershell gehen.

    Eigentlich macht das Script folgendes.

    Es soll im Verzeichnis C:\temp\Geko Anträge alle Anhänge  in einer Mail versenden, sobald es mehr als 30 Elemente sind, soll eine neue Mail erstellt werden, (jeweils mit maximal 30 Elementen).
    -> Sprich füge solange Attachments in der Mail an,  bis die Anzahl von 30 erreicht ist. Sind mehr Elemente im Verzeichnis Vorhanden, erstelle eine weitere Mail

    und erzeuge solange x Mails (max 30 Anhängen), bis alle Elemente als Anhang in Mails angefügt wurden und keines mehr im Verzeichnis vorhanden ist.


    Im Anschluss sollen die Anhänge welche in der Mail / die Mails angefügt wurden in ein Archiv verschoben werden.

     

  4. Hallo, ich muss ein bestehendes VBA Script in PowerShell umsetzen,

    leider habe ich keine Möglichkeit gefunden, dieses über Tools zu realisieren.

    Vielleicht kann mir hier jemand helfen.

     

    ' maximale Anzahl an Anlagen pro Mail
        Const MAXATTACH = 30
        ' Ordner mit den Attachments
        Const ATTACHMENTFOLDER = "C:\temp\Geko Anträge"
        ' Archivordner
        Const ARCHIVEFOLDER = "c:\temp\versendet_Geko_Anträge"
        ' Suchwort für Dateien
        Const SEARCHTERM = "GEKO-Antrag"
        '--------------------------
        ' counter für Attachments
        Dim cnt As Integer: cnt = 0
        Dim colAttachments As Collection
        
        ' Filesystemobject
        Set fso = CreateObject("Scripting.FileSystemObject")
        'Neue Mail nach Vorgabe erstellen
        Set mail = CreateMailTemplate
        ' Attachments suchen ...
        Set colAttachments = SearchFilesInFolder(ATTACHMENTFOLDER, SEARCHTERM)
        'Wenn Attachments da ...
        
        
        If colAttachments.Count > 0 Then
            ' Für jedes Attachment
            For Each File In colAttachments
                ' Wenn max. Attachment-Anzahl erreicht zeige mail und erstelle eine neue
                If cnt > 0 And (cnt Mod MAXATTACH) = 0 Then
                    mail.Display
                    Set mail = CreateMailTemplate
                End If
                'Attachment hinzufügen
                mail.Attachments.Add File
                'counter erhöhen
                cnt = cnt + 1
            Next
            ' Mail Anzeigen
            mail.Display
            
            ' Dateien in Archivordner verschieben
            For Each File In colAttachments
                'Prüfen ob Dateiname der Vorgabe entspricht  xxxxxxxx_xxxxxxx_GEKO-Antrag_xxxxxxx
                 Dim Txt(1) As String
                 Dim i As Long
                 Dim Match As Boolean
                 Set Re = CreateObject("VBScript.RegExp")
                 Re.MultiLine = True
                 Re.pattern = "\d{8}_\d{7}_GEKO-Antrag_"
    
    
                    Txt(1) = Right(File, (Len(File) - (Len(ATTACHMENTFOLDER) + 1)))
    
    
                    For i = 1 To 1
                    Match = Re.test(Txt(i))
                         If Match Then
                         fso.MoveFile File, ARCHIVEFOLDER & "\"
                     Else
                         Debug.Print (File), " ---> Fehler, nicht verschoben"
                         End If
                    Next
                         
            
                
            Next
                myDebug (File) & " ---> bitte das temp. Verzeichnis auf weitere nicht versendete Dateinen prüfen und bei bedarf umbenennen."
    
        Else
            ' Keine Attachments gefunden
            MsgBox "Keine Attachments für Suchwort gefunden!", vbExclamation
        End If
        'Cleanup
        Set fso = Nothing
    End Sub

     

  5. Hallo Zusammen,


    ich kenne mich mit PowerShell nicht wirklich aus.

    Folgende soll passieren bzw. funktioniert soweit gut

    PDF Dateien werden zur weiteren Verarbeitung in TIFF konvertiert (GHostscript) und in bestimmten Ziel abgespeichert.

     

    Das PDF selbst wird dann verschoben, soweit ganz gut.

     

    Dateinamen sind aktuell z.b. 1234567_name_vorname.pdf
    Sobald die Bearbeitung fertig ist, erhält diese ein x vor dem Namen x1234567_name_vorname.pdf
    und soll in ein tiff konvertiert werden. Nun soll aber folgendes passieren wo ich nicht weiter komme

    -> die zu erstellende TIFF Datei soll einen bestimmten Aufbau des Namen erhalten.

    Datum des letzten Zugriffs des PDF _ die 7 Stellige Nummer _ das Wort "prüfung" _ name_vorname.tif
    z.b. 09072020_1234567_prüfung_name_vorname.tiff

     

    bisher sieht das Script wie folgt aus.

    es werden alle PDF´s des Verzeichnis als TIFF erstellt und verschoben.
    vielleicht kann mir hier jemand helfen.

     

    #Pfad Ghostscript
    $tool = "C:\Sicherung_Stick\Tools\ghostscript\bin\gswin64c.exe"
    
    
    #Ausleseverzeichnis PDF
    $inputDir = "X:\513214\7. Scan Posteingang\"
    
    #Pfad für erledigt
    $outputDirPDF = "X:\513214\7. Scan Posteingang\ERLEDIGT\"
    
    #Pfad für TIFF
    $outputDir = "X:\513214\TIFF zum einlesen\"
    
    $pdfs = get-childitem $inputDir -recurse | where name -like "x*.pdf"
    
    foreach($pdf in $pdfs)
    {
        $tif = $outputDir + $pdf.BaseName + ".tif"
        $pdf_to_move = $inputDir + $pdf.BaseName + ".pdf"
        if(test-path $tif)
        {
            "tif file already exists " + $tif
        }
        else       
        {  
            'Processing ' + $pdf.Name       
            $param = "-sOutputFile=$tif"
            & $tool -q -sPageList=1 -dNOPAUSE -sDEVICE=tiffg4 $param -r600 $pdf.FullName -c quit
        }
        # Datei verschieben
        Move-Item $pdf_to_move $outputDirPDF
        }
    EXIT


     

×
×
  • Neu erstellen...