Beiträge von Wizzard

    Und wenn du die aktuelle Version hast, kannst dir auch noch den Spaß mit den Leerzeichen im Dateinamen sparen. Release Notes vom August letzten Jahres:

    • Anhängen von Dateien mit Leerzeichen im Dateinamen per Attach Befehl

      Soll per Befehl @@Attach eine Datei mit Leerzeichen im Dateinamen angehängt werden, so funktionierte dies nicht. Wird der Dateiname in Anführungszeichen gesetzt, so wird die Datei nun angehängt.

    Heißt, die Befehlszeile müsste korrekt dann so aussehen, führendes/Schließendes Anführungszeichen beim echo Befehl ist wohl nicht notwendig.

    for %D in (*.pdf) do (echo @@betreff Bearbeite PDF %D@@@@ATTACH "c:\Anhaenge\%D" > c:\FilescanDir\%D.txt)

    Du wirst bei Dateinamen mit Leerzeichen auch bei Riawies Lösungen Probleme bekommen, da der Attach Befehl m.E. da der pingelige ist. U.U. hilft es wenn man den Pfad der Datei noch in Anführungszeichen setzt. Bei mir sieht das dann so aus:
    objTargetFile.WriteLine("@@Attach """ & SourcePath & fileName & "." & fileExt & """ , del")

    Das ,del kannst du auch weglassen wenn die PDF nach der Verarbeitung durch den ServiceLayer nicht gelöscht werden sollen.
    Auf jeden Fall bei den Tests auch den Ereignisordner im David Client im Auge behalten, da werden dann auftretende Fehler wie Dateianhang nicht gefunden usw. protokolliert.

    Auch das von mir bereitgestellte Script nutzt den eh schon vorhandenen API FileScanService mit den erweiterten Befehlen zur Adressierung und Betreff. Da muss man halt nach dem Erstellen der Dateien die Dateiendung noch wegnehmen.
    Wobei letzteres bei Riawies Lösung auch ein Fallstrick sein kann. Wenn die Datei direkt mit der richtigen Endung hingelegt wird, kann es (selten) passieren, dass der ServiceLayer die Datei schon verarbeitet hat, bevor der Befehl drin steht.

    Könnte als VBScript grob so aussehen (Achtung KI erstellt ;-))
    PDFs dürfen keine Leerzeichen im Dateinamen haben, Pfade, Adressat müssten angepasst werden. Die Smileys 8) sind eine Acht mit Klammer zu. ;)

    Option Explicit

    ' Pfad zum Verzeichnis mit den PDF-Dateien

    Const SourcePath = "C:\MeinVerzeichnis\"

    ' Zielpfad für die Ausgabedateien

    Const TargetPath = "c:\david\apps\faxware\out\api\"

    ' Erstellen des FileSystemObject

    Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")

    ' Überprüfen, ob das Quellverzeichnis existiert

    If Not objFSO.FolderExists(SourcePath) Then

    WScript.Echo "Das Verzeichnis " & SourcePath & " existiert nicht."

    WScript.Quit

    End If

    ' Überprüfen, ob der Zielpfad existiert und ggf. erstellen

    If Not objFSO.FolderExists(TargetPath) Then

    objFSO.CreateFolder TargetPath

    End If

    ' Erstellen des Ordners als Objekt

    Dim objFolder : Set objFolder = objFSO.GetFolder(SourcePath)

    ' Schleife durch alle Dateien im Ordner

    Dim objFile, fileName, fileExt, targetFilePath, objTargetFile

    For Each objFile In objFolder.Files

    ' Überprüfen, ob die Datei eine PDF-Datei ist

    fileName = objFSO.GetBaseName(objFile)

    fileExt = objFSO.GetExtensionName(objFile)

    If LCase(fileExt) = "pdf" Then

    ' Erstellen eines zufälligen Dateinamens für die Zieltextdatei (8 Zeichen)

    Dim randomName : randomName = Left(CreateObject("Scriptlet.TypeLib").GUID, 8) & ".txt"

    targetFilePath = objFSO.BuildPath(TargetPath, randomName)

    ' Öffnen der Zieltextdatei im Anhang-Modus oder Neuerstellung falls noch nicht vorhanden

    If Not objFSO.FileExists(targetFilePath) Then

    Set objTargetFile = objFSO.CreateTextFile(targetFilePath)

    Else

    Set objTargetFile = objFSO.OpenTextFile(targetFilePath, 8)

    End If

    'Hier wird dann der Job generiert

    objTargetFile.WriteLine("@@nmr Benutzer@meine.domain")

    objTargetFile.WriteLine("@@subject Bitte dieses PDF bearbeiten")

    objTargetFile.WriteLine(" Das ist dann der Text der in der Mail steht, kann u.U. nur im Plain Text angezeigt werden")

    ' Schreiben des Dateinamens in die Zieltextdatei

    objTargetFile.WriteLine("@@Attach " & SourcePath & fileName & "." & fileExt & " , del")

    ' Schließen der Zieltextdatei und Aufräumen der Variablen und Objekte

    objTargetFile.Close

    Set objTargetFile = Nothing

    End If

    Next

    ' Umbenennen der Ausgabedateien, um nur die Erweiterung zu entfernen

    Dim newFileName : Dim newFilePath : Dim oldFileName : Dim sourceFilePath

    Set objFolder = objFSO.GetFolder(TargetPath)

    For Each objFile In objFolder.Files

    ' Überprüfen, ob die Datei eine TXT-Datei ist

    oldFileName = objFSO.GetFileName(objFile)

    fileName = objFSO.GetBaseName(objFile)

    fileExt = objFSO.GetExtensionName(objFile)

    If LCase(fileExt) = "txt" Then

    newFileName = filename

    targetFilePath = objFSO.BuildPath(TargetPath, newFileName)

    sourceFilePath = objFSO.BuildPath(TargetPath, oldFileName)

    If objFSO.FileExists(targetFilePath) Then

    objFSO.DeleteFile targetFilePath

    End If

    objFSO.MoveFile sourceFilePath, targetFilePath

    End If

    Next

    Set objFolder = Nothing

    Set objFSO = Nothing