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

Automatischer PDF Druck auf spezifischen Drucker

Mitglied: Orvqb99d5E2U

Orvqb99d5E2U (Level 1) - Jetzt verbinden

11.05.2016 um 11:25 Uhr, 1038 Aufrufe, 4 Kommentare

Hi. Ich benötige für einen Windows Server ein Script mit folgenden Eigenschaften:

Order1 soll überprüft werden, wenn dort neue PDF Dokumente liegen sollen sie auf Drucker 1 gedruckt werden. Anschließend sollen die gedruckten PDF Dateien in Ordner1_Archiv verschoben werden.
Order2 soll überprüft werden, wenn dort neue PDF Dokumente liegen sollen sie auf Drucker 2 gedruckt werden. Anschließend sollen die gedruckten PDF Dateien in Ordner2_Archiv verschoben werden.
Die Überprüfung auf neue PDF Dateien soll alle 60 Sekunden erfolgen.

Ich habe so ein ähnliches Script welches vor ~8 Jahren mit Autoit erstellt wurde, jedoch weiß ich nicht wie ich da den Druck auf einem spezifischen Drucker auswählen kann, und vermutlich ist es überhaupt nicht mehr zeitgemäß. Der dort erfolgte vorherige Emailversand wird auch nicht mehr benötigt.

01.
$g_szVersion = 'PDF Mailer'
02.
If WinExists($g_szVersion) Then Exit; It's already running
03.
AutoItWinSetTitle($g_szVersion)
04.

05.
Opt("RunErrorsFatal", 0)
06.
Opt("TrayAutoPause", 0)
07.

08.
Global $Sender, $Recipient, $MailUser, $MailPass
09.
Global $Enable_Encryption = True
10.
If $CmdLine[0] > 0 Then
11.
	If StringInStr($CmdLine[1], "deutschland") AND StringInStr($CmdLine[1], "polen") Then Exit ;;can't run both at the same time!
12.
	If StringInStr($CmdLine[1], "deutschland") Then
13.
		$Sender = 'pdfmail_de@unkown.de'
14.
		$Recipient = 'pdfmail_pl@unkown.de'
15.
		$MailUser = 'user'
16.
		$MailPass = 'pass'
17.
	ElseIf StringInStr($CmdLine[1], "polen") Then
18.
		$Sender = 'pdfmail_pl@unkown.dee'
19.
		$Recipient = 'pdfmail_de@unkown.de'
20.
		$MailUser = 'user'
21.
		$MailPass = 'pass'
22.
	ElseIf StringInStr($CmdLine[1], "/?") Then
23.
		MsgBox(32, $g_szVersion, "This program has two arguments, which must be in order." & @CRLF & _
24.
		"The first argument is country, which can either be deutschland or polen." & @CRLF & @CRLF & _
25.
		"The second argument is optional, controlling encryption." & @CRLF & _
26.
		"Passing noencrypt as the second argument will disable encryption")
27.
		Exit
28.
	Else
29.
		Exit
30.
	EndIf
31.
	If $CmdLine[0] > 1 Then
32.
		If StringInStr($CmdLine[2], "noencrypt") Then $Enable_Encryption = False
33.
	EndIf
34.
Else
35.
	Exit
36.
EndIf
37.

38.
#region Configuration Settings
39.
Global Const $Blowfish_Password = 'pass'
40.

41.
Global Const $POP3Server = 'pop3.unkown.de'
42.
Global Const $SMTPServer = 'smtp.unkown.de'
43.

44.
;SendMail Configuration
45.
Global Const $SendMail = 'C:\scanner\scanner_de\sendmail'
46.
Global Const $PDF_Dir = 'C:\scanner\sendmail\Emails'
47.

48.
;GetMail Configuration
49.
Global Const $GetMail = 'C:\scanner\getmail'
50.
Global Const $source = 'C:\scanner\getmail\Emails' ; Location of encrypted PDF files
51.
Global Const $dest = 'C:\scanner\getmail\Emails\Archives' ; Location of decrypted PDF files
52.
Global Const $GSPrintDir = 'C:\scanner\Print\Ghostgum\gsview' ;Path to PDF Printer Program
53.

54.
#endregion Configuration Settings
55.

56.
#region Do Not Edit!!!!!
57.

58.
#region GetMail Functions
59.
Func GetMail()
60.
	If Not FileExists($source) Then DirCreate($source)
61.
	If Not FileExists($dest) Then DirCreate($dest)
62.
	FileChangeDir($GetMail)
63.

64.
	RunWait('getmail.exe -u ' & $MailUser & ' -pw ' & $MailPass & ' -s ' & $POP3Server & ' -xtract -delete', '', @SW_HIDE)
65.
	FileDelete('*.txt')
66.
	FileDelete('*.out')
67.
	FileMove('*.pdf', $source & '\*.pdf', 1)
68.
	Sleep(1000)
69.

70.
	Local $file = FileFindFirstFile($source & '\*.pdf')
71.
	If $file = -1 Then Return 0
72.
	While 1
73.
		Local $pdffile = FileFindNextFile($file)
74.
		If @error Then ExitLoop
75.
		If $Enable_Encryption Then
76.
			RunWait('bfish.exe /I:"' & $source & '\' & $pdffile & '" /O:"' & $dest & '\' & $pdffile & '" /P:"' & $Blowfish_Password & '" /D /Q', "", @SW_HIDE)
77.
			If FileExists($dest & '\' & $pdffile) Then
78.
				;File successfully decrypted, print it!
79.
				Local $WorkingDir = @WorkingDir
80.
				FileChangeDir($GSPrintDir)
81.
				RunWait('gsprint.exe "' & $dest & '\' & $pdffile & '"', $GSPrintDir, @SW_HIDE)
82.
				FileChangeDir($WorkingDir)
83.
			EndIf
84.
		Else
85.
			FileMove($source & '\*.pdf', $dest & '\')
86.
			Local $WorkingDir = @WorkingDir
87.
			FileChangeDir($GSPrintDir)
88.
			RunWait('gsprint.exe "' & $dest & '\' & $pdffile & '"', $GSPrintDir, @SW_HIDE)
89.
			FileChangeDir($WorkingDir)
90.
		EndIf
91.
		While FileExists($source & '\' & $pdffile)
92.
			FileDelete($source & '\' & $pdffile) ;delete the encrypted version
93.
		WEnd
94.
	WEnd
95.
	FileClose($file)
96.
	Return 1
97.
EndFunc   ;==>GetMail
98.
#endregion
99.

100.
#region SendMail Functions
101.
Func SendMail()
102.
	If Not FileExists($PDF_Dir) Then DirCreate($PDF_Dir)
103.
	If Not FileExists($PDF_Dir & '\Encrypted\') Then DirCreate($PDF_Dir & '\Encrypted\')
104.
	If Not FileExists($PDF_Dir & '\Archives\') Then DirCreate($PDF_Dir & '\Archives\')
105.
	If Not FileExists($PDF_Dir & '\*.pdf') Then Return 0
106.

107.
	Local $PDFfiles[1]
108.
	FileChangeDir($SendMail)
109.
	Local $PDFHandle = FileFindFirstFile($PDF_Dir & '\*.pdf')
110.
	While 1
111.
		Local $file = FileFindNextFile($PDFHandle)
112.
		If $file <> '' Then
113.
			ReDim $PDFfiles[ (UBound($PDFfiles) + 1) ]
114.
			$PDFfiles[0] += 1
115.
			$PDFfiles[ (UBound($PDFfiles) - 1) ] = $file
116.
		Else
117.
			ExitLoop
118.
		EndIf
119.
	WEnd
120.
	FileClose($PDFHandle)
121.

122.
	For $x = 1 To $PDFfiles[0]
123.
		If $Enable_Encryption = True Then
124.
			RunWait('bfish.exe /I:"' & $PDF_Dir & '\' & $PDFfiles[$x] & '" /O:"' & $PDF_Dir & '\Encrypted\' & $PDFfiles[$x] & '" /P:"' & $Blowfish_Password & '" /E /Q', "", @SW_HIDE)
125.
			FileSend($PDFfiles[$x], $PDF_Dir & '\Encrypted\' & $PDFfiles[$x])
126.
		Else
127.
			FileSend($PDFfiles[$x], $PDF_Dir & '\' & $PDFfiles[$x])
128.
		EndIf
129.
			FileMove($PDF_Dir & '\' & $PDFfiles[$x], $PDF_Dir & '\Archives\' & $PDFfiles[$x])
130.
			FileDelete($PDF_Dir & '\Encrypted\' & $PDFfiles[$x])
131.
	Next
132.
	Return 1
133.
EndFunc   ;==>SendMail
134.

135.
Func FileSend($FileName, $Attachment)
136.

137.
	Local $objMessage = ObjCreate('CDO.Message')
138.
	With $objMessage
139.
		.Subject = $FileName
140.
		.Sender = $Sender
141.
		.From = $Sender
142.
		.To = $Recipient
143.
		.TextBody = $FileName & ' is attached and encrypted.'
144.
		.AddAttachment ($Attachment)
145.
	EndWith
146.

147.
	With $objMessage.Configuration.Fields
148.
		.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
149.
		.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $SMTPServer
150.
		.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
151.
		.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $MailUser
152.
		.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $MailPass
153.
		.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
154.
		.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
155.
		.Update
156.
	EndWith
157.
	$objMessage.Send
158.
	Return 1
159.
EndFunc   ;==>FileSend
160.
#endregion
161.

162.
Func _ReduceMemoryUsage()
163.
	Local $ai_GetCurrentProcessId = DllCall('kernel32.dll', 'int', 'GetCurrentProcessId')
164.
	Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $ai_GetCurrentProcessId[0])
165.
	Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
166.
	DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
167.
	Return $ai_Return[0]
168.
EndFunc
169.
#endregion Do Not Edit
170.

171.
While 1
172.
	If (@Hour >= 7) AND ((@HOUR & @MIN) <=1630) Then
173.
		GetMail()
174.
		Sleep(1000 * 15) ;;Wait for 15 seconds
175.
		SendMail()
176.
	EndIf
177.
	_ReduceMemoryUsage()
178.
	Sleep(1000 * 60 * 4.75) ;;Wait for 5 minutes
179.
WEnd
Welche Programmiersprache wäre aktuell am besten für dieses Vorhaben geeignet? Kann evtl. jemand das Script relativ einfach anpassen?
Mitglied: Pjordorf
11.05.2016 um 12:33 Uhr
Hallo,

Zitat von Orvqb99d5E2U:
vor ~8 Jahren mit Autoit erstellt wurde, und vermutlich ist es überhaupt nicht mehr zeitgemäß.
Warum nicht?
https://www.autoitscript.com/site/autoit/
https://autoit.de/
https://de.wikipedia.org/wiki/AutoIt

Gruß,
Peter
Bitte warten ..
Mitglied: Orvqb99d5E2U
11.05.2016 um 12:44 Uhr
Damit meinte ich nicht, dass Autoit veraltet ist, sondern der Code ansich. So lässt er sich z.B. auch nicht mehr kompilieren.
Bitte warten ..
Mitglied: Pjordorf
11.05.2016, aktualisiert um 16:57 Uhr
Hallo,

Zitat von Orvqb99d5E2U:
sondern der Code ansich. So lässt er sich z.B. auch nicht mehr kompilieren.
Warum lässt er sich nicht Kompilieren bzw. wo hakt es denn?
Sollen wir jetzt deine Arbeit tun?

Gruß,
Peter
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Automatischer PDF Druck mit Kopieanzahl
Frage von MeDDuXBatch & Shell2 Kommentare

Hallo Zusammen, ich hab leider zu diesem Thema viel gefunden aber nicht genau das was ich brauche. Kurz zum ...

Grafik
Photoshop - druck aller gruppen als pdf
gelöst Frage von jensgebkenGrafik23 Kommentare

Hallo Gemeinschaft, habe eine ps datei in der ich viele Gruppen gebildet habe mit unterschiedlichen Layouts ist es möglich ...

Windows 10
Druck option
Frage von jensgebkenWindows 109 Kommentare

Hallo Gemeinschaft, folgendes Problem. Ich muss aus einer Anwendung drei Drucke erstellen 2x schwarz weiss 1 x Farbe 1 ...

Windows Server

PDF Druck dauert ewig - Windows Server 2012 R2

gelöst Frage von Intruder0001Windows Server3 Kommentare

Hallo habe das Problem das wenn PDF Dokumente ausgedruckt werden diese nur sehr langsam gedruckt werden. 10 Seitiges Dokument ...

Neue Wissensbeiträge
E-Mail

Newsletter: Unread News - IT News in Byte Länge

Tipp von franktaylor vor 11 StundenE-Mail7 Kommentare

Hallo, würde gerne auf einen Newsletter hinweisen, den ich heute per Zufall gefunden und mit euch gerne teilen möchte: ...

Outlook & Mail

Outlook 2016 stürzt ab, wenn man ein (at)- Zeichen im Text einer neuen E-Mail schreibt

Tipp von Enriqe vor 23 StundenOutlook & Mail4 Kommentare

Bei uns in der Firma häuften sich die Fälle, bei denen sich Outlook kommentarlos verabschiedet, wenn man ein - ...

Google Android

Google sperrt Android-Updates und den Play Store für Huawei

Information von Deepsys vor 1 TagGoogle Android8 Kommentare

Das finde ich schon ein starkes Stück, Trump der Welt Diktator. So kann man mit einem Dekret mal eben ...

Windows 7

Südkoreas Regierung setzt auf Linux, um Windows 7 Clients abzulösen

Information von kgborn vor 2 TagenWindows 74 Kommentare

Kleiner Infosplitter zum Wochenanfang: Während München (LiMux) und die niedersächsische Finanzverwaltung von Linux auf einen Windows 10-Client (und Office) ...

Heiß diskutierte Inhalte
DNS
DNS fragt falsche ip zuerst ab
gelöst Frage von recoldDNS23 Kommentare

Hallo zusammen, wollte mal fragen, was mit meiner DNS falsch ist? der A eintrag 88.48.118.88 sollte auf den ts3 ...

Windows Server
Passwortänderung an RODC möglich?
Frage von DexthaWindows Server23 Kommentare

Hallo, ich habe einen RODC, auf welchen ich über ldaps (Web-Seite mit php7) Passwortänderungen durchführen möchte. Ist das grundsätzlich ...

Windows 10
Windows am MAC
gelöst Frage von LeeX01Windows 1019 Kommentare

Guten Abend zusammen, ich habe gerade ein Macbook Pro vor mir welches ich mit einem Windows 10 to go ...

Windows Server
RDP als Citrix Alternative
gelöst Frage von samreinWindows Server17 Kommentare

Hallo zusammen, ich bin neu hier und das ist mein erster Beitrag. Ich bin Einzeladmin und wir setzen bei ...