1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Schnuffel

Beiträge von Schnuffel

  • Community Projekt: Teil 2 - Umgang mit Discord, Git, GitHub, gemeinsamen Tooling

    • Schnuffel
    • 31. Januar 2024 um 18:02

    Discord = eine Serverbasierte Chatplattform (einfach ausgedrückt)

    Git/GitHub = Versionierungs Tool mit dem man offline (Git) aber auch online (GitHub) im Team gemeinsam an Scripten arbeiten
    und deren Veränderungen nachverfolgen kann (vereinfacht ausgedrückt)

  • VLC noch aktuell? [2024]

    • Schnuffel
    • 30. Januar 2024 um 19:07

    das Wiki zu VideoLan VLC-Player sollte dir alle Commandline Parameter anbieten. Ich schaue damit zur Zeit im Schlafzimmer und einem Mini-PC in einem autoit Script Fernsehen über meine FritzBox ;)

    VLC command-line help - VideoLAN Wiki

  • ASCII-Art

    • Schnuffel
    • 30. Januar 2024 um 19:02

    aber an den Akkustik-Koppler erinnere ich mich auch noch.
    erste Gehversuche damit auf irgendwelchen ftp-Servern in USA. ^^

    ich glaube damals gab es 300 kbit oder so als Geschwindigkeit. /oder waren 300 bit :rofl: )

    Da sind meine 200MBit heute ja gar nicht vorstellbar. Und was die Leute mir da für sinnlose Daten schicken.
    Da wurde damals noch mit jedem Register der CPU und mit jedem bit gegeizt.

  • Community Projekt: Teil 1 - Interesse an einem gemeinsamen größeren (Software)Projekt?

    • Schnuffel
    • 30. Januar 2024 um 18:58

    für den 2. Kommunikationsweg könnte man Discord nutzen.

    Wie sieht es denn mit einer Plattform aus, auf der wir dann gemeinschaftlich proggen können.

    Ich kenne "nur" GitHub.

  • Community Projekt: Teil 1 - Interesse an einem gemeinsamen größeren (Software)Projekt?

    • Schnuffel
    • 30. Januar 2024 um 12:24

    grundsätzlich würde ich mich auch anschließen.

    Ob dass dann den Erwartungen entspricht in Lieferzeit, Qualität und Co, dass müssen dann andere bewerten.

    Als Themen kann ich nur in den Ring werfen:

    Eine Client-Server Anwendung inkl. php und Frontend auf mySQL.
    Ich befasse mich schon seit längerem mit dem Thema Software-Rollout, Patch-Management, Asset-Verwaltung und Co.
    Mir schwebt da ein Server vor, der mit Agents (Client) kommuniziert und dabei WDS, Opsi und Co. vollständig ersetzt und natürlich über weit mehr Feature verfügt.
    Die Verwaltung der Datenbank kann auch gerne ein autoit Frontend sein und muss nicht als html Lösung bestehen.

    Diese Bausteine kann man aufteilen, mit vielen einzelnen Features versehen und da ist sicher für jeden etwas dabei.

    Wichtig ist nur, dass wir uns auf eine gewisse Übergaberegel der Funktionen einigen.

    Ich mache aber auch gerne an etwas anderem mit. ^^

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 28. Januar 2024 um 13:03

    das Problem ist der leere txt-Ordner. Solange da keine Dateien drin sind, die durchsucht werden können, passiert halt nix ;)

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 20:09

    ansonsten brauche ich mindestens die genutzten pdf-Dateien, den Inhalt der Ordner (während der Laufzeit des Scriptes) in
    - C:\RG ohne EZ
    - C:\QR EZ
    - C:\QR EZ\txt

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 20:06

    letzter Versuch für heute:

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    
    Opt("WinTitleMatchMode", 2)
    Opt("MustDeclareVars", 1)
    
    #cs
    Bedingungen:
    Download und Installation folgender Programme im Standardverzeichnis
    pdftkfree ==> https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_free-2.02-win-setup.exe
    Ghostscript ==> https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/gs10021w32.exe
    #ce
    
    ; Variablen, die angepasst werden können
    Global $sTitel = "merge PDF-Tool"
    Global $sPathRechnungPDF = "C:\RG ohne EZ"
    Global $sPathQRPDF = "C:\QR EZ"
    Global $sPathQRTxt = $sPathQRPDF & "\txt"
    Global $sDestinationIP = "192.168.150.34" ; um die IP pingen zu können (Test Verfügbarkeit)
    Global $sPathDestinationPDF = "\\" & $sDestinationIP & "\NAS Zuhause synch verschlüsselt\Firma\Rechnungen"
    Global $sPathRechnungArchiv = $sPathRechnungPDF & "\Archiv"
    Global $sPathQRArchiv = $sPathQRPDF & "\Archiv"
    
    Global $sRegExSuchString = ".*(\d{4}-\d{4}).*" ; der Suchstring extrahiert aus dem Rechungsnamen nnnn-nnnn
    Global $nScanPause = 10 ; Zeit in Sekunden als Pausenangabe bis zum nächsten Scan des Source Ordners, beginnt mit Pause!
    Global $bArchivieren = 1 ; wenn aktiviert dann wird jede pdf in "Archiv" kopiert vor merge
    
    ; Installationen von Ghostscript und pdftk prüfen
    Global $aEnvPath = StringSplit(EnvGet("Path"), ';')
    For $i = 1 To $aEnvPath[0]
    	If StringInStr($aEnvPath[$i], "gs\gs") Then
    		If FileExists($aEnvPath[$i] & '\gswin32c.exe') And FileExists($aEnvPath[$i] & '\gsdll32.dll') Then
    			Global $sPathToMergeTool = $aEnvPath[$i] & '\gswin32c.exe'
    			ExitLoop
    		Else
    			ShellExecute("https://ghostscript.com/releases/gsdnld.html")
    			Exit MsgBox(262144 + 16, $sTitel, "Die zur Ausführung benötigte Datei: " & $aEnvPath[$i] & '\gswin32c.exe' & " konnte nicht gefunden werden." & @CRLF & @CRLF & "Installieren Sie die 32-bit Version von GhostScript und starten Sie dieses Script dann erneut.")
    		EndIf
    	EndIf
    Next
    
    If FileExists("C:\Program Files (x86)\PDFtk\bin\pdftk.exe") And FileExists("C:\Program Files (x86)\PDFtk\bin\libiconv2.dll") Then
    	Global $sPathToMergeTool = 'C:\Program Files (x86)\PDFtk\bin\pdftk.exe'
    Else
    	ShellExecute("https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/")
    	Exit MsgBox(262144 + 16, $sTitel, "Die zur Ausführung benötigte Datei: C:\Program Files (x86)\PDFtk\bin\pdftk.exe  konnte nicht gefunden werden." & @CRLF & @CRLF & "Installieren Sie die 32-bit Version von GhostScript und starten Sie dieses Script dann erneut.")
    EndIf
    
    ; Das Script erwartet die Dateien pdftk.exe & die libiconv2.dll im Scriptverzeichnis
    Global $sPathToGSWin32cTool = @ScriptDir & '\gswin32c.exe' ; Das Script erwartet die Dateien gswin32c.exe & gsdll32.dll im Scriptverzeichnis
    
    ; interne Variablendeklaration
    Global $command, $PID, $sTxt, $hQRListePDF, $sQRListePDF, $sQRFilePDF, $hQRListeTxt, $sQRListeTxt, $hRechnungPDF, $sSearchString, $sRechnungFileName, $aQRListePDF, $aQRListeTxt, $nTimer, $Error, $ErrorMsg, $bQRFound = 0, $sAkt_Searchtxt, $bfirstStart = 1
    
    ; prüfen, ob die Ordner existieren, eine Berechtigungs-Prüfung innerhalb der Ordner wird nicht durchgeführt (Schreibrechte)
    If DriveGetType($sPathRechnungPDF) = "Network" Then
    	If Ping($sPathRechnungPDF, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sPathRechnungPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If DriveGetType($sPathQRPDF) = "Network" Then
    	If Ping($sPathQRPDF, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sPathQRPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If DriveGetType($sDestinationIP) = "Network" Then
    	If Ping($sDestinationIP, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sDestinationIP & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If Not FileWrite($sPathRechnungPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathRechnungPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathRechnungPDF & "\Testdatei.tmp")
    If Not FileWrite($sPathQRPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathQRPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathQRPDF & "\Testdatei.tmp")
    If Not FileWrite($sPathDestinationPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathDestinationPDF & "\Testdatei.tmp")
    
    If $bArchivieren Then
    	If Not FileExists($sPathRechnungArchiv) Then DirCreate($sPathRechnungArchiv)
    	If Not FileExists($sPathQRArchiv) Then DirCreate($sPathQRArchiv)
    EndIf
    If Not FileExists($sPathQRPDF & "\txt") Then DirCreate($sPathQRPDF & "\txt") ; Unterordner für die zu durchsuchenden txt-Dateien erstellen
    
    ; HotKey, der die Anwendung beendet (funktioniert bei au3 wie auch bei exe)
    HotKeySet("!x", "_Exit")
    
    $nTimer = TimerInit() ; aktuelle Systemzeit holen und die Pausezeit addieren, damit wird sofort die Schleife durchlaufen und erst nach 1 Durchlauf pausiert
    
    While Sleep(10) ; 10ms schlafen um Prozessor zu entlasten
    	If $bfirstStart = 1 Or TimerDiff($nTimer) > $nScanPause * 1000 Then  ; solange gegen die Pausezeit prüfen, bis überschritten, dann nach PDF-Datei suchen
    		$bfirstStart = 0
    		$nTimer = TimerInit() ; aktuelle Systemzeit holen, damit wieder gegen die Pausezeit verglichen werden kann
    		$hRechnungPDF = FileFindFirstFile($sPathRechnungPDF & "\*.pdf") ; sucht in dem angebenen Ordner nach pdf-Datei/en
    		If $hRechnungPDF = -1 Then ; keine pdf-Datei gefunden
    			FileClose($hRechnungPDF) ; Such-Handle $hRechnungPDF wieder schließen
    			ContinueLoop ; keine Datei gefunden, Loop von vorn beginnen und von Anfang mit Pause
    		Else ; mind. 1 Datei wurde gefunden
    			$bQRFound = 0
    			While 1 ; Loop der alle zu durchsuchenden Dateien durchgeht und wenn alle durch, dann Schleife verlassen
    				$sRechnungFileName = FileFindNextFile($hRechnungPDF) ; erste/nächste pdf-Datei  aus dem Such-Handle $hRechnungPDF der Variable zuweisen
    				If @error Then ExitLoop ; keine Datei mehr vorhanden, Loop Abbruch
    				ConsoleWrite("Rechnung gefunden: " & $sRechnungFileName & @CRLF)
    				$sSearchString = StringRegExpReplace($sRechnungFileName, $sRegExSuchString, "$1") ; Suchstring auf den RegEx im Dateinamen reduzieren
    				; Fileliste aller QR pdf-Dateien inkl. Unterordner erstellen, in denen gesucht werden soll, Ordner Archiv und txt sind excluded
    				; Prüfung bei jedem Durchlauf, damit die txt bei Rechnungsstellung auch vorhanden ist
    				$hQRListePDF = FileFindFirstFile($sPathQRPDF & "\*.pdf")
    				If $hQRListePDF = -1 Then
    					ConsoleWrite('keine pdf-Datei in "QR EZ" gefunden' & @CRLF)
    					ContinueLoop ; wenn keine pdf-Datei gefunden wurde, dann den Loop neu starten da keine Datei zum anhängen vorhanden ist
    				EndIf
    				While 1
    					$sQRFilePDF = FileFindNextFile($hQRListePDF)
    					If @error Then
    						ExitLoop ; keine Datei mehr vorhanden, Loop Abbruch
    					EndIf
    					$sQRListeTxt = StringRegExpReplace($sQRFilePDF, "(.pdf)", ".txt")
    					If Not FileExists($sPathQRPDF & "\txt\" & StringRegExpReplace($sQRFilePDF, "(.pdf)", ".txt")) Then
    						; mit Ghostscript die Datei in eine txt-Datei konvertieren und im Unterordner txt abspeichern
    						RunWait('"' & $sPathToGSWin32cTool & '" -sDEVICE=txtwrite -sOutputFile="' & $sPathQRTxt & "\" & $sQRListeTxt & '" -dBATCH  -dNOPAUSE "' & $sPathQRPDF & "\" & $sQRFilePDF & '"', "", @SW_HIDE)
    					EndIf
    					$sTxt = FileRead($sPathQRTxt & "\" & $sQRListeTxt)
    					If StringInStr($sTxt, $sSearchString) > 0 Then     ; Suchstring in einer txt-Datei gefunden
    						$bQRFound = 1
    						; $sRechnungFileName = aktueller Dateiname der RechnungsPDF
    						; $aQRListeTxt[$i] = aktueller Dateiname der txt-Datei die durchsucht wird
    						; $sQRFilePDF = aktuelle QR pdf-Datei die zur gefundenen txt-Datei gehört
    						$sQRFilePDF = StringRegExpReplace($sQRListeTxt, "(.txt)", ".pdf")
    						; mit gefundener Datei mergen und Output nach Destination
    						$command = '"' & $sPathToMergeTool & '" "' & $sPathRechnungPDF & '\' & $sRechnungFileName & '" "' & $sPathQRPDF & '\' & $sQRFilePDF & '" cat output "' & $sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf') & '"'
    						;ConsoleWrite($command & @CRLF)
    						$PID = Run($command, "", @SW_SHOW, 2)
    						Sleep(5000)
    						If FileExists($sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf')) = 1 Then
    							ConsoleWrite($sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf') & " gemerged und abgelegt" & @CRLF & @CRLF)
    							If $bArchivieren Then
    								; Rechnung in Archiv kopieren wenn Archiv aktiviert
    								FileCopy($sPathRechnungPDF & "\" & $sRechnungFileName, $sPathRechnungArchiv)
    								; gefundene pdf-Datei in Archiv kopieren, da die Fund-Datei nach merge gelöscht wird, wenn Archiv aktiviert
    								FileCopy($sPathQRPDF & "\" & $sAkt_Searchtxt, $sPathQRArchiv)
    							EndIf
    							FileDelete($sPathRechnungPDF & "\" & $sRechnungFileName)
    							FileDelete($sPathQRTxt & "\" & $sQRListeTxt)
    							FileDelete($sPathQRPDF & "\" & $sQRFilePDF)
    							ExitLoop
    						Else     ; merge-PDF nicht vorhanden, etwas ist beim zusammenführen schief gelaufen, Prüfung auf Return Code der Konsolenausgabe ist aufwendiger
    							ConsoleWrite($sPathDestinationPDF & '\' & $sSearchString & "+.pdf nicht gefunden" & @CRLF)
    							MsgBox(262144 + 16, $sTitel, "Die Datei " & $sPathRechnungPDF & "\" & $sSearchString & ".pdf konnte nicht mit " & $sPathQRPDF & '\' & StringReplace($sAkt_Searchtxt, ".txt", ".pdf") & " zusammengeführt werden" & @CRLF & "Das Skript wartet, bis das Fenster geschlossen wird.")
    						EndIf
    					EndIf
    				WEnd
    			WEnd
    		EndIf
    		FileClose($hRechnungPDF)
    	EndIf
    WEnd
    
    Func _Exit()
    	FileDelete($sPathQRTxt & "\*.txt")
    	Exit
    EndFunc   ;==>_Exit
    Alles anzeigen
  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 19:55

    bei mir funktioniert es ja. Daher verstehe ich den Unterschied nicht.....

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 19:45

    ich fürchte jetzt bin ich an dem Punkt, dass ich so nicht weiterhelfen kann.

    Entweder sehe ich dein Zielsystem und kann dort alle Umstände gegenprüfen,

    oder ich müsste endlos Fehlerhandling einbauen.

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 18:24

    versuch mal diese abgespeckte Version

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    
    Opt("WinTitleMatchMode", 2)
    Opt("MustDeclareVars", 1)
    
    #cs
    Bedingungen:
    Download und Installation folgender Programme im Standardverzeichnis
    pdftkfree ==> https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_free-2.02-win-setup.exe
    Ghostscript ==> https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/gs10021w32.exe
    #ce
    
    ; Variablen, die angepasst werden können
    Global $sTitel = "merge PDF-Tool"
    Global $sPathRechnungPDF = "C:\RG ohne EZ"
    Global $sPathQRPDF = "C:\QR EZ"
    Global $sPathQRTxt = $sPathQRPDF & "\txt"
    Global $sDestinationIP = "192.168.150.34" ; um die IP pingen zu können (Test Verfügbarkeit)
    Global $sPathDestinationPDF = $sDestinationIP & "\NAS Zuhause synch verschlüsselt\Firma\Rechnungen"
    Global $sPathRechnungArchiv = $sPathRechnungPDF & "\Archiv"
    Global $sPathQRArchiv = $sPathQRPDF & "\Archiv"
    
    Global $sRegExSuchString = ".*(\d{4}-\d{4}).*" ; der Suchstring extrahiert aus dem Rechungsnamen nnnn-nnnn
    Global $nScanPause = 10 ; Zeit in Sekunden als Pausenangabe bis zum nächsten Scan des Source Ordners, beginnt mit Pause!
    Global $bArchivieren = 1 ; wenn aktiviert dann wird jede pdf in "Archiv" kopiert vor merge
    
    ; Installationen von Ghostscript und pdftk prüfen
    Global $aEnvPath = StringSplit(EnvGet("Path"), ';')
    For $i = 1 To $aEnvPath[0]
    	If StringInStr($aEnvPath[$i], "gs\gs") Then
    		If FileExists($aEnvPath[$i] & '\gswin32c.exe') And FileExists($aEnvPath[$i] & '\gsdll32.dll') Then
    			Global $sPathToMergeTool = $aEnvPath[$i] & '\gswin32c.exe'
    			ExitLoop
    		Else
    			ShellExecute("https://ghostscript.com/releases/gsdnld.html")
    			Exit MsgBox(262144 + 16, $sTitel, "Die zur Ausführung benötigte Datei: " & $aEnvPath[$i] & '\gswin32c.exe' & " konnte nicht gefunden werden." & @CRLF & @CRLF & "Installieren Sie die 32-bit Version von GhostScript und starten Sie dieses Script dann erneut.")
    		EndIf
    	EndIf
    Next
    
    If FileExists("C:\Program Files (x86)\PDFtk\bin\pdftk.exe") And FileExists("C:\Program Files (x86)\PDFtk\bin\libiconv2.dll") Then
    	Global $sPathToMergeTool = 'C:\Program Files (x86)\PDFtk\bin\pdftk.exe'
    Else
    	ShellExecute("https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/")
    	Exit MsgBox(262144 + 16, $sTitel, "Die zur Ausführung benötigte Datei: C:\Program Files (x86)\PDFtk\bin\pdftk.exe  konnte nicht gefunden werden." & @CRLF & @CRLF & "Installieren Sie die 32-bit Version von GhostScript und starten Sie dieses Script dann erneut.")
    EndIf
    
    ; Das Script erwartet die Dateien pdftk.exe & die libiconv2.dll im Scriptverzeichnis
    Global $sPathToGSWin32cTool = @ScriptDir & '\gswin32c.exe' ; Das Script erwartet die Dateien gswin32c.exe & gsdll32.dll im Scriptverzeichnis
    
    ; interne Variablendeklaration
    Global $command, $PID, $sTxt, $hQRListePDF, $sQRListePDF, $sQRFilePDF, $hQRListeTxt, $sQRListeTxt, $hRechnungPDF, $sSearchString, $sRechnungFileName, $aQRListePDF, $aQRListeTxt, $nTimer, $Error, $ErrorMsg, $bQRFound = 0, $sAkt_Searchtxt, $bfirstStart = 1
    
    ; prüfen, ob die Ordner existieren, eine Berechtigungs-Prüfung innerhalb der Ordner wird nicht durchgeführt (Schreibrechte)
    If DriveGetType($sPathRechnungPDF) = "Network" Then
    	If Ping($sPathRechnungPDF, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sPathRechnungPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If DriveGetType($sPathQRPDF) = "Network" Then
    	If Ping($sPathQRPDF, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sPathQRPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If DriveGetType($sDestinationIP) = "Network" Then
    	If Ping($sDestinationIP, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sDestinationIP & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If Not FileWrite($sPathRechnungPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathRechnungPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathRechnungPDF & "\Testdatei.tmp")
    If Not FileWrite($sPathQRPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathQRPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathQRPDF & "\Testdatei.tmp")
    If Not FileWrite($sPathDestinationPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathDestinationPDF & "\Testdatei.tmp")
    
    If $bArchivieren Then
    	If Not FileExists($sPathRechnungArchiv) Then DirCreate($sPathRechnungArchiv)
    	If Not FileExists($sPathQRArchiv) Then DirCreate($sPathQRArchiv)
    EndIf
    If Not FileExists($sPathQRPDF & "\txt") Then DirCreate($sPathQRPDF & "\txt") ; Unterordner für die zu durchsuchenden txt-Dateien erstellen
    
    ; HotKey, der die Anwendung beendet (funktioniert bei au3 wie auch bei exe)
    HotKeySet("!x", "_Exit")
    
    $nTimer = TimerInit() ; aktuelle Systemzeit holen und die Pausezeit addieren, damit wird sofort die Schleife durchlaufen und erst nach 1 Durchlauf pausiert
    
    While Sleep(10) ; 10ms schlafen um Prozessor zu entlasten
    	If $bfirstStart = 1 Or TimerDiff($nTimer) > $nScanPause * 1000 Then  ; solange gegen die Pausezeit prüfen, bis überschritten, dann nach PDF-Datei suchen
    		$bfirstStart = 0
    		$nTimer = TimerInit() ; aktuelle Systemzeit holen, damit wieder gegen die Pausezeit verglichen werden kann
    		$hRechnungPDF = FileFindFirstFile($sPathRechnungPDF & "\*.pdf") ; sucht in dem angebenen Ordner nach pdf-Datei/en
    		If $hRechnungPDF = -1 Then ; keine pdf-Datei gefunden
    			FileClose($hRechnungPDF) ; Such-Handle $hRechnungPDF wieder schließen
    			ContinueLoop ; keine Datei gefunden, Loop von vorn beginnen und von Anfang mit Pause
    		Else ; mind. 1 Datei wurde gefunden
    			$bQRFound = 0
    			While 1 ; Loop der alle zu durchsuchenden Dateien durchgeht und wenn alle durch, dann Schleife verlassen
    				$sRechnungFileName = FileFindNextFile($hRechnungPDF) ; erste/nächste pdf-Datei  aus dem Such-Handle $hRechnungPDF der Variable zuweisen
    				If @error Then ExitLoop ; keine Datei mehr vorhanden, Loop Abbruch
    				ConsoleWrite("pdf-Datei wird verarbeitet: " & $sRechnungFileName & @CRLF)
    				$sSearchString = StringRegExpReplace($sRechnungFileName, $sRegExSuchString, "$1") ; Suchstring auf den RegEx im Dateinamen reduzieren
    
    				; Fileliste aller QR pdf-Dateien inkl. Unterordner erstellen, in denen gesucht werden soll, Ordner Archiv und txt sind excluded
    				; Prüfung bei jedem Durchlauf, damit die txt bei Rechnungsstellung auch vorhanden ist
    				$hQRListePDF = FileFindFirstFile($sPathQRPDF & "\*.pdf")
    				If @error > 0 Then
    					ConsoleWrite('keine pdf-Datei in "QR EZ" gefunden' & @CRLF)
    					ContinueLoop ; wenn keine pdf-Datei gefunden wurde, dann den Loop neu starten da keine Datei zum anhängen vorhanden ist
    				EndIf
    				While 1
    					$sQRFilePDF = FileFindNextFile($hQRListePDF)
    					If @error Then
    						ConsoleWrite('keine pdf-Datei mit passendem Inhalt für die Datei: ' & $sRechnungFileName & ' in "QR EZ" gefunden' & @CRLF)
    						ExitLoop ; keine Datei mehr vorhanden, Loop Abbruch
    					EndIf
    					$sQRListeTxt = StringRegExpReplace($sQRFilePDF, "(.pdf)", ".txt")
    					If Not FileExists($sPathQRPDF & "\txt\" & StringRegExpReplace($sQRFilePDF, "(.pdf)", ".txt")) Then
    						; mit Ghostscript die Datei in eine txt-Datei konvertieren und im Unterordner txt abspeichern
    						RunWait('"' & $sPathToGSWin32cTool & '" -sDEVICE=txtwrite -sOutputFile="' & $sPathQRTxt & "\" & $sQRListeTxt & '" -dBATCH  -dNOPAUSE "' & $sPathQRPDF & "\" & $sQRFilePDF & '"', "", @SW_HIDE)
    					EndIf
    					$sTxt = FileRead($sPathQRTxt & "\" & $sQRListeTxt)
    					If StringInStr($sTxt, $sSearchString) > 0 Then     ; Suchstring in einer txt-Datei gefunden
    						$bQRFound = 1
    						; $sRechnungFileName = aktueller Dateiname der RechnungsPDF
    						; $aQRListeTxt[$i] = aktueller Dateiname der txt-Datei die durchsucht wird
    						; $sQRFilePDF = aktuelle QR pdf-Datei die zur gefundenen txt-Datei gehört
    						$sQRFilePDF = StringRegExpReplace($sQRListeTxt, "(.txt)", ".pdf")
    						; mit gefundener Datei mergen und Output nach Destination
    						$command = '"' & $sPathToMergeTool & '" "' & $sPathRechnungPDF & '\' & $sRechnungFileName & '" "' & $sPathQRPDF & '\' & $sQRFilePDF & '" cat output "' & $sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf') & '"'
    						;ConsoleWrite($command & @CRLF)
    						$PID = Run($command, "", @SW_SHOW, 2)
    						Sleep(5000)
    						If FileExists($sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf')) = 1 Then
    							ConsoleWrite($sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf') & " gemerged und abgelegt" & @CRLF & @CRLF)
    							If $bArchivieren Then
    								; Rechnung in Archiv kopieren wenn Archiv aktiviert
    								FileCopy($sPathRechnungPDF & "\" & $sRechnungFileName, $sPathRechnungArchiv)
    								; gefundene pdf-Datei in Archiv kopieren, da die Fund-Datei nach merge gelöscht wird, wenn Archiv aktiviert
    								FileCopy($sPathQRPDF & "\" & $sAkt_Searchtxt, $sPathQRArchiv)
    							EndIf
    							FileDelete($sPathRechnungPDF & "\" & $sRechnungFileName)
    							FileDelete($sPathQRTxt & "\" & $sQRListeTxt)
    							FileDelete($sPathQRPDF & "\" & $sQRFilePDF)
    							ExitLoop
    						Else     ; merge-PDF nicht vorhanden, etwas ist beim zusammenführen schief gelaufen, Prüfung auf Return Code der Konsolenausgabe ist aufwendiger
    							ConsoleWrite($sPathDestinationPDF & '\' & $sSearchString & "+.pdf nicht gefunden" & @CRLF)
    							MsgBox(262144 + 16, $sTitel, "Die Datei " & $sPathRechnungPDF & "\" & $sSearchString & ".pdf konnte nicht mit " & $sPathQRPDF & '\' & StringReplace($sAkt_Searchtxt, ".txt", ".pdf") & " zusammengeführt werden" & @CRLF & "Das Skript wartet, bis das Fenster geschlossen wird.")
    						EndIf
    					EndIf
    				WEnd
    			WEnd
    		EndIf
    		FileClose($hRechnungPDF)
    	EndIf
    WEnd
    
    Func _Exit()
    	FileDelete($sPathQRTxt & "\*.txt")
    	Exit
    EndFunc   ;==>_Exit
    Alles anzeigen
  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 17:58

    du siehst, es gibt weitaus mehr Details, die vorher abgeklärt sein müssen, damit ein Programmierer sich nicht verrennt. ;)

    Außerdem geht mein Script im Moment noch davon aus, dass bei Erscheinen einer Rechnung der betreffende QR-Code.pdf bereits im Ordner "QR EZ" existiert.

    Auch das sind Vorgaben, die ich kennen muß.

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 17:39

    PS: die Funktion "_FileListArrayRec" verwende ich nur, weil ich nicht weiß ob sich die Dateien nur in dem Ordner oder auch in Unterordner befinden können.

    Für das Script ist das existenziell wichtig.

    Ansonsten wäre das alles auch einfacher zu lösen.
    Je mehr feststehende Parameter es gibt, um so weniger muss man im Code darauf eingehen.

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 17:24

    ich kenne deine Umgebung nicht. Auf meiner NAS funktioniert der Code.
    Ersetze zum Test den Pfad in Zeile 21 mit einem lokalen Ordnerpfad.

    Wenn es dann geht, liegt das Problem am Netzwerk Pfad.

    PS: wenn meine NAS eine Weile nichts zu tun hat, geht die in den Standby. Wenn ich dann versuche auf sie zuzugreifen kommt bei mir immer "Laufwerk nicht erreichbar".

    Vielleicht liegt es daran.

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 16:49

    so, diesen Code habe ich gegen meine NAS geprüft und deine Ordnerstruktur mit eingebaut.

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    
    Opt("WinTitleMatchMode", 2)
    Opt("MustDeclareVars", 1)
    
    #cs
    Bedingungen:
    Download und Installation folgender Programme im Standardverzeichnis
    pdftkfree ==> https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_free-2.02-win-setup.exe
    Ghostscript ==> https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/gs10021w32.exe
    #ce
    
    ; Variablen, die angepasst werden können
    Global $sTitel = "merge PDF-Tool"
    Global $sPathRechnungPDF = "C:\RG ohne EZ"
    Global $sPathQRPDF = "C:\QR EZ"
    Global $sPathQRTxt = $sPathQRPDF & "\txt"
    Global $sDestinationIP = "192.168.150.34" ; um die IP pingen zu können (Test Verfügbarkeit)
    Global $sPathDestinationPDF = "\\" & $sDestinationIP & "\NAS Zuhause synch verschlüsselt\Firma\Rechnungen"
    Global $sPathRechnungArchiv = $sPathRechnungPDF & "\Archiv"
    Global $sPathQRArchiv = $sPathQRPDF & "\Archiv"
    
    Global $sRegExSuchString = ".*(\d{4}-\d{4}).*" ; der Suchstring extrahiert aus dem Rechungsnamen nnnn-nnnn
    Global $nScanPause = 10 ; Zeit in Sekunden als Pausenangabe bis zum nächsten Scan des Source Ordners, beginnt mit Pause!
    Global $bArchivieren = 1 ; wenn aktiviert dann wird jede pdf in "Archiv" kopiert vor merge
    
    ; Installationen von Ghostscript und pdftk prüfen
    Global $aEnvPath = StringSplit(EnvGet("Path"), ';')
    For $i = 1 To $aEnvPath[0]
    	If StringInStr($aEnvPath[$i], "gs\gs") Then
    		If FileExists($aEnvPath[$i] & '\gswin32c.exe') And FileExists($aEnvPath[$i] & '\gsdll32.dll') Then
    			Global $sPathToMergeTool = $aEnvPath[$i] & '\gswin32c.exe'
    			ExitLoop
    		Else
    			ShellExecute("https://ghostscript.com/releases/gsdnld.html")
    			Exit MsgBox(262144 + 16, $sTitel, "Die zur Ausführung benötigte Datei: " & $aEnvPath[$i] & '\gswin32c.exe' & " konnte nicht gefunden werden." & @CRLF & @CRLF & "Installieren Sie die 32-bit Version von GhostScript und starten Sie dieses Script dann erneut.")
    		EndIf
    	EndIf
    Next
    
    If FileExists("C:\Program Files (x86)\PDFtk\bin\pdftk.exe") And FileExists("C:\Program Files (x86)\PDFtk\bin\libiconv2.dll") Then
    	Global $sPathToMergeTool = 'C:\Program Files (x86)\PDFtk\bin\pdftk.exe'
    Else
    	ShellExecute("https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/")
    	Exit MsgBox(262144 + 16, $sTitel, "Die zur Ausführung benötigte Datei: C:\Program Files (x86)\PDFtk\bin\pdftk.exe  konnte nicht gefunden werden." & @CRLF & @CRLF & "Installieren Sie die 32-bit Version von GhostScript und starten Sie dieses Script dann erneut.")
    EndIf
    
     ; Das Script erwartet die Dateien pdftk.exe & die libiconv2.dll im Scriptverzeichnis
    Global $sPathToGSWin32cTool = @ScriptDir & '\gswin32c.exe' ; Das Script erwartet die Dateien gswin32c.exe & gsdll32.dll im Scriptverzeichnis
    
    ; interne Variablendeklaration
    Global $command, $PID, $sTxt, $sQRFilePDF, $hRechnungPDF, $sSearchString, $sRechnungFileName, $aQRListePDF, $aQRListeTxt, $nTimer, $Error, $ErrorMsg, $bQRFound = 0, $sAkt_Searchtxt, $bfirstStart = 1
    
    ; prüfen, ob die Ordner existieren, eine Berechtigungs-Prüfung innerhalb der Ordner wird nicht durchgeführt (Schreibrechte)
    If DriveGetType($sPathRechnungPDF) = "Network" Then
    	If Ping($sPathRechnungPDF, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sPathRechnungPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If DriveGetType($sPathQRPDF) = "Network" Then
    	If Ping($sPathQRPDF, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sPathQRPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If DriveGetType($sDestinationIP) = "Network" Then
    	If Ping($sDestinationIP, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sDestinationIP & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    If Not FileWrite($sPathRechnungPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathRechnungPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathRechnungPDF & "\Testdatei.tmp")
    If Not FileWrite($sPathQRPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathQRPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathQRPDF & "\Testdatei.tmp")
    If Not FileWrite($sPathDestinationPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathDestinationPDF & "\Testdatei.tmp")
    
    If $bArchivieren Then
    	If Not FileExists($sPathRechnungArchiv) Then DirCreate($sPathRechnungArchiv)
    	If Not FileExists($sPathQRArchiv) Then DirCreate($sPathQRArchiv)
    EndIf
    If Not FileExists($sPathQRPDF & "\txt") Then DirCreate($sPathQRPDF & "\txt") ; Unterordner für die zu durchsuchenden txt-Dateien erstellen
    
    ; HotKey, der die Anwendung beendet (funktioniert bei au3 wie auch bei exe)
    HotKeySet("!x", "_Exit")
    
    $nTimer = TimerInit() ; aktuelle Systemzeit holen und die Pausezeit addieren, damit wird sofort die Schleife durchlaufen und erst nach 1 Durchlauf pausiert
    
    While Sleep(10) ; 10ms schlafen um Prozessor zu entlasten
    	If $bfirstStart = 1 Or TimerDiff($nTimer) > $nScanPause * 1000  Then ; solange gegen die Pausezeit prüfen, bis überschritten, dann nach PDF-Datei suchen
    		$bfirstStart = 0
    		ConsoleWrite("geht los" & @CRLF)
    
    		$nTimer = TimerInit() ; aktuelle Systemzeit holen, damit wieder gegen die Pausezeit verglichen werden kann
    		$hRechnungPDF = FileFindFirstFile($sPathRechnungPDF & "\*.pdf") ; sucht in dem angebenen Ordner nach pdf-Datei/en
    		If $hRechnungPDF = -1 Then ; keine pdf-Datei gefunden
    			FileClose($hRechnungPDF) ; Such-Handle $hRechnungPDF wieder schließen
    			ContinueLoop ; keine Datei gefunden, Loop von vorn beginnen und von Anfang mit Pause
    		Else ; mind. 1 Datei wurde gefunden
    			$bQRFound = 0
    			While 1 ; Loop der alle zu durchsuchenden Dateien durchgeht und wenn alle durch, dann Schleife verlassen
    				$sRechnungFileName = FileFindNextFile($hRechnungPDF) ; erste/nächste pdf-Datei  aus dem Such-Handle $hRechnungPDF der Variable zuweisen
    				If @error Then ExitLoop ; keine Datei mehr vorhanden, Loop Abbruch
    				ConsoleWrite("pdf-Datei wird verarbeitet: " & $sRechnungFileName & @CRLF)
    				$sSearchString = StringRegExpReplace($sRechnungFileName, $sRegExSuchString, "$1") ; Suchstring auf den RegEx im Dateinamen reduzieren
    
    				; Fileliste aller QR pdf-Dateien inkl. Unterordner erstellen, in denen gesucht werden soll, Ordner Archiv und txt sind excluded
    				; Prüfung bei jedem Durchlauf, damit die txt bei Rechnungsstellung auch vorhanden ist
    				$aQRListePDF = _FileListToArrayRec($sPathQRPDF, "*.pdf||Archiv;txt", 1, 1, 1)
    				If @error > 0 Then ContinueLoop ; wenn keine pdf-Datei gefunden wurde, dann den Loop neu starten da keine Datei zum anhängen vorhanden ist
    				For $s = 1 To $aQRListePDF[0] ; wenn eine pdf-Datei noch nicht als txt-Datei vorhanden, dann erstellen
    					If Not FileExists($sPathQRPDF & "\txt\" & StringRegExpReplace($aQRListePDF[$s], "(.pdf)", ".txt")) Then
    						; mit Ghostscript die Datei in eine txt-Datei konvertieren und im Unterordner txt abspeichern
    						RunWait('"' & $sPathToGSWin32cTool & '" -sDEVICE=txtwrite -sOutputFile="' & $sPathQRTxt & "\" & StringRegExpReplace($aQRListePDF[$s], "(.pdf)", ".txt") & '" -dBATCH  -dNOPAUSE "' & $sPathQRPDF & "\" & $aQRListePDF[$s] & '"', "", @SW_HIDE)
    					EndIf
    				Next
    
    				; Fileliste aller txt-Dateien erstellen, in denen gesucht werden soll
    				$aQRListeTxt = _FileListToArrayRec($sPathQRTxt, "*.txt||", 1, 1, 1)
    				$Error = @error ; Fehlercode abfangen und in Datei schreiben um diesen weiter zu verarbeiten
    				If $Error > 0 Then ; wenn Fehler, dann melden und Anwendung beenden
    					Switch $Error
    						Case 1
    							$ErrorMsg = "Path not found or invalid"
    						Case 2
    							$ErrorMsg = "Invalid Include parameter"
    						Case 3
    							$ErrorMsg = "Invalid Exclude parameter"
    						Case 4
    							$ErrorMsg = "Invalid Exclude_Folders parameter"
    						Case 5
    							$ErrorMsg = "Invalid $iReturn parameter"
    						Case 6
    							$ErrorMsg = "Invalid $iRecur parameter"
    						Case 7
    							$ErrorMsg = "Invalid $iSort parameter"
    						Case 8
    							$ErrorMsg = "Invalid $iReturnPath parameter"
    						Case 9
    							$ErrorMsg = "No files/folders found"
    					EndSwitch
    					Exit MsgBox(262144 + 64, $sTitel, "Die Liste mit Dateien die durchsucht werden sollen, konnte nicht erstellt werden." & @CRLF & _
    							"Der Fehlercode aus _FileListToArrayRec lautet:" & $ErrorMsg & @CRLF & @CRLF & "Die Anwendung wird beendet!")
    				EndIf
    
    				If $aQRListePDF[0] <> $aQRListeTxt[0] Then Exit MsgBox(262144 + 16, $sTitel, "Die Anzahl der QR-pdf Dateien stimmt nicht mit der Anzahl QR Txt-Dateien überein!" & @CRLF & "Das Script wird beendet!")
    
    				For $i = 1 To $aQRListeTxt[0] ; alle vorhandenen txt-Dateien in $sPathQRTxt nach dem Suchstring der Rechnung durchsuchen
    					$sTxt = FileRead($sPathQRTxt & "\" & $aQRListeTxt[$i])
    					If StringInStr($sTxt, $sSearchString) > 0 Then ; Suchstring in einer txt-Datei gefunden
    						$bQRFound = 1
    						; $sRechnungFileName = aktueller Dateiname der RechnungsPDF
    						; $aQRListeTxt[$i] = aktueller Dateiname der txt-Datei die durchsucht wird
    						; $sQRFilePDF = aktuelle QR pdf-Datei die zur gefundenen txt-Datei gehört
    						$sQRFilePDF = StringRegExpReplace($aQRListeTxt[$i], "(.txt)", ".pdf")
    						; mit gefundener Datei mergen und Output nach Destination
    						$command = '"' & $sPathToMergeTool & '" "' & $sPathRechnungPDF & '\' & $sRechnungFileName & '" "' & $sPathQRPDF & '\' & $sQRFilePDF & '" cat output "' & $sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf') & '"'
    						;ConsoleWrite($command & @CRLF)
    						$PID = Run($command, "", @SW_SHOW, 2)
    						Sleep(5000)
    						If FileExists($sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf')) = 1 Then
    							ConsoleWrite($sPathDestinationPDF & '\' & StringReplace($sRechnungFileName, '.pdf', '+.pdf') & " gemerged und abgelegt" & @CRLF & @CRLF)
    							If $bArchivieren Then
    								; Rechnung in Archiv kopieren wenn Archiv aktiviert
    								FileCopy($sPathRechnungPDF & "\" & $sRechnungFileName, $sPathRechnungArchiv)
    								; gefundene pdf-Datei in Archiv kopieren, da die Fund-Datei nach merge gelöscht wird, wenn Archiv aktiviert
    								FileCopy($sPathQRPDF & "\" & $sAkt_Searchtxt, $sPathQRArchiv)
    							EndIf
    							FileDelete($sPathRechnungPDF & "\" & $sRechnungFileName)
    							FileDelete($sPathQRTxt & "\" & $aQRListeTxt[$i])
    							FileDelete($sPathQRPDF & "\" & $sQRFilePDF)
    							ExitLoop
    						Else ; merge-PDF nicht vorhanden, etwas ist beim zusammenführen schief gelaufen, Prüfung auf Return Code der Konsolenausgabe ist aufwendiger
    							ConsoleWrite($sPathDestinationPDF & '\' & $sSearchString & "+.pdf nicht gefunden" & @CRLF)
    							MsgBox(262144 + 16, $sTitel, "Die Datei " & $sPathRechnungPDF & "\" & $sSearchString & ".pdf konnte nicht mit " & $sPathQRPDF & '\' & StringReplace($sAkt_Searchtxt, ".txt", ".pdf") & " zusammengeführt werden" & @CRLF & "Das Skript wartet, bis das Fenster geschlossen wird.")
    						EndIf
    					EndIf
    				Next
    			WEnd
    		EndIf
    		If $bQRFound = 0 Then
    			If MsgBox(16 + 1, $sTitel, "Der Dateiname " & $sSearchString & " der Rechnung konnte in keiner Datei in " & $sPathQRPDF & " gefunden werden!") = 2 Then Exit
    			ExitLoop
    		EndIf
    		FileClose($hRechnungPDF)
    	EndIf
    WEnd
    
    Func _Exit()
    	FileDelete($sPathQRTxt & "\*.txt")
    	Exit
    EndFunc   ;==>_Exit
    Alles anzeigen

    Wie gesagt, das Problem ist der UNC Pfad. Da schleicht sich schnell mal ein Fehler ein, wenn man das "aus der Hüfte" proggt.

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 15:24

    ja ja die lieben UNC-Pfade ^^

    AutoIt
    streiche im Script Zeile 70-71:
    If Not FileWrite($sPathDestinationPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathDestinationPDF & "\Testdatei.tmp")
    AutoIt
    setze im Script Zeile 70-71:
    If Not FileWrite("\\" & $sPathDestinationPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete("\\" & $sPathDestinationPDF & "\Testdatei.tmp")

    Das Problem war eigentlich nur, dass ich nicht dein Szenario in meinem IT-Umgebung nachbauen wollte.
    Da schleichen sich dann so Fehler ein.

    Sry, jetzt sollte es laufen, zumindest bei mir tut es das jetzt auch mit deinen Pfaden

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 12:39
    AutoIt
    ersetze Zeile 21:
    Global $sPathDestinationPDF = "\\" & $sDestinationIP & "\NAS Zuhause synch verschlüsselt\Firma\Rechnungen"
    AutoIt
    mit:
    Global $sPathDestinationPDF = $sDestinationIP & "\NAS Zuhause synch verschlüsselt\Firma\Rechnungen"

    die führenden Backslashes sind unnötig.
    Da ich das immer mit lokalen Ordnern getestet habe ist das bei mir nicht aufgefallen ;)

  • Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

    • Schnuffel
    • 27. Januar 2024 um 07:47

    In Zeile 64 - 65 hatte sich der Fehlerteufel eingeschlichen.
    Ich habe dort nicht die IP geprüft, sondern den vollständigen Pfad.

    Ich habe die Variable in Zeile 64 und 65 ersetzt.

    AutoIt
    ;vorher:
    If DriveGetType($sPathDestinationPDF) = "Network" Then
    	If Ping($sPathDestinationPDF, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    
    ;nachher:
    If DriveGetType($sDestinationIP) = "Network" Then
    	If Ping($sDestinationIP, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sDestinationIP & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf

    Dadurch wurde nicht die IP-Adresse angepingt, sondern der vollständige Pfad. Dass ergab dann immer einen Fehler. ;)

  • ASCII-Art

    • Schnuffel
    • 26. Januar 2024 um 19:23

    ich bin dann wegen der Musik auf einen Atari St 1024 umgestiegen.

    Mein Gott wenn ich mich an Notator in S/w erinnere…

  • ASCII-Art

    • Schnuffel
    • 26. Januar 2024 um 18:19

    lol

    ich erinnere mich noch an Wolfenstein auf dem Commodore C64 ^^

    1 Stunde mit der Datasette von einer Kasette die Daten laden,
    hoffen das es keinen Fehler gibt und dann Wolfenstein zocken ^^

    Castle Wolfenstein – C64-Wiki

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™