Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Hilfe!! Script erstellen, das 2 Dateien prüfen soll und dann als email zb. mit blat versenden.

Frage Entwicklung

Mitglied: askando

askando (Level 1) - Jetzt verbinden

18.12.2013, aktualisiert 15:37 Uhr, 3501 Aufrufe, 10 Kommentare

Hallo!

Ich habe ein Problem, das mein ein Vorgänger von mir für eine Fax Lösung (GFI Fax) ein Programm geschrieben hat und dieses nur im kompilierten Status aufzufinden ist und nicht nicht mehr funktioniert.

Nun im Prinzip soll das Programm oder meinetwegen auch Script prüfen ob in einem Verzeichnis 2 Dateien (Pdf und txt) vorhanden sind. (PDF = Fax das als Anhang per Email versendet werden soll; TXT= Absender, Faxnummer u. Auftragsnummer) wenn beide vorhanden, dann kopiere in ein "out" Verzeichnis und danach versende die pdf per mail.

Ich bin kein Programmierer, sondern kümmere mich ausschließlich um Virtualisierungen etc. nun da ich nicht weiß in welcher Sprache er das Programm geschrieben hat und auch leider nirgendwo Projektdateien hinterlassen hat muss ich mir was einfallen lassen.
Wäre echt froh wenn mir jemand dabei helfen kann.

Mit freundlichen Grüßen
Mitglied: ChrisDynamite
LÖSUNG 18.12.2013, aktualisiert um 15:37 Uhr
im einfachsten fall kann man das schon per batch script machen.

01.
:nachoben 
02.
if exist c:\inputornder\*.pdf { 
03.
 
04.
dann hier die txt auslesen. das geht am besten per findstr. den wert auslesen und in eine variable speichern 
05.
 
06.
dann blat aufrufen und die variable irgendwo dem programm übergeben (muss ich mir genauer anschauen) 
07.
sprung wieder nach oben 
08.
goto nachoben 
09.
10.
 
11.
und um das in einer schleife auszuführen und möglichst einfach zu halten (das ist die ultra-billig-variante) in den else zweig ein: 
12.
 
13.
else { 
14.
goto nachoben 
15.
}

soooo ungefähr kann man das sicherlich lösen.
wenn ich zeit finde mach ich das heute abend. schreib mir, falls du keine andere lösung gefunden hast.

grüße chris
Bitte warten ..
Mitglied: askando
18.12.2013 um 15:38 Uhr
Danke Chris! ich versuche es mal so wie du es vorgeschlagen hast.
Bitte warten ..
Mitglied: ChrisDynamite
LÖSUNG 18.12.2013, aktualisiert um 16:33 Uhr
nach welchem schema heißen die txt und pdf dateien?
Bitte warten ..
Mitglied: ChrisDynamite
LÖSUNG 18.12.2013, aktualisiert um 16:33 Uhr
heißt die txt oder pdf immer gleich?
Bitte warten ..
Mitglied: ChrisDynamite
LÖSUNG 18.12.2013, aktualisiert um 16:33 Uhr
hier der ca. codeteil:

01.
:run 
02.
set TXT_INHALT = "" 
03.
	IF EXIST "c:\Ordner\*.pdf" && IF EXIST "c:\Ordner\*.txt" 
04.
05.
		set /p TXT_INHALT=<c:\name der txt.txt 
06.
		 
07.
		 
08.
		rem hier kommt jetzt der blat code und als platzhalter der email adresse kommt der inhalt von TXT_inhalt rein. 
09.
		rem zurück zum anfang 
10.
		goto run 
11.
12.
		 
13.
	ELSE  
14.
15.
		rem zurück zum Anfang 
16.
		goto run 
17.
18.
 
Bitte warten ..
Mitglied: colinardo
LÖSUNG 18.12.2013, aktualisiert um 23:30 Uhr
Hallo askando,
wenn es ein AutoIT Script sein darf, das den Ordner selbständig in einem änderbaren Intervall überprüft, inklusive integriertem Mailversand ohne externe Tools(via CDO):
Es muss nur einmal gestartet werden, und läuft dann permanent im Hintergrund.
Die Variablen die angepasst werden müssen, findest du im Kopft des Scripts.
  • Zeile 4 = Pfad in dem die PDF-Dateien eingehen
  • Zeile 5 = Pfad in den die PDF-Dateien verschoben werden
  • Zeile 7 = Intervall (Sekunden) in dem der Ordner auf neue Faxe überprüft werden soll
  • ab Zeile 9 die Daten für deinen Mailserver und die Mailadressen
Der Code geht jetzt davon aus das die Textdatei den gleichen Namen wie das PDF besitzt.
01.
#NoTrayIcon 
02.
#Include <file.au3> 
03.
; Variablen ------------------ 
04.
global $CHECKDIR = "C:\Temp\source" 
05.
global $OUTDIR = "C:\Temp\target" 
06.
; Intervall in dem der Ordner überprüft werden soll (Sekunden) 
07.
Const $CHECKINTERVALL = 5 
08.
; Mail Daten 
09.
Global $FROMEMAIL = "" 
10.
Global $TOEMAIL = "" 
11.
Const $FROMNAME = "Dein Name" 
12.
Const $MAILSERVER = "SMTP.SERVER.DE" 
13.
Const $SMTPUSER = "SMTPUSERNAME" 
14.
Const $SMTPPASS = "SMTPPASSWORD" 
15.
Const $SMTPPORT = "25" 
16.
Const $SMTPUSESSL = 1 
17.
;----------------------------- 
18.
While 1 
19.
	$search = FileFindFirstFile($CHECKDIR & "\*.pdf") 
20.
	if $search <> -1 then 
21.
		While 1 
22.
			$file = FileFindNextFile($search) 
23.
			If @error Then ExitLoop 
24.
			local $szDrive, $szDir, $szFName, $szExt 
25.
			_PathSplit($file, $szDrive, $szDir, $szFName, $szExt) 
26.
			$pdfFile = $CHECKDIR & "\" & $file 
27.
			$txtFile = $CHECKDIR & "\" & $szFName & ".txt" 
28.
			if FileExists($txtFile) then 
29.
				$f = FileOpen($txtFile) 
30.
				$line1 = FileReadLine($f,1) 
31.
				$line2 = FileReadLine($f,2) 
32.
				FileClose($f) 
33.
				$text_faxnummer = StringRegExp($line1,",\s*([^\r\n]+)",3) 
34.
				$ret1 = @error 
35.
				$text_email = StringRegExp($line2,"fr=([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6})",3) 
36.
				$ret2 = @error 
37.
				if $ret1 = 0 and $ret2 = 0 then 
38.
					$FROMEMAIL = StringReplace($text_email[0]," ","") 
39.
					$TOEMAIL = StringReplace($text_faxnummer[0]," ","") & "@faxmaker.com" 
40.
					_INetSmtpMailCom($MAILSERVER,$FROMNAME,$FROMEMAIL,$TOEMAIL,"Neues Fax","Im Anhang finden sie das Fax als PDF",$pdfFile,"","","Normal",$SMTPUSER,$SMTPPASS,$SMTPPORT,$SMTPUSESSL) 
41.
					FileMove($pdfFile,$OUTDIR & "\",9) 
42.
					FileMove($txtFile,$OUTDIR & "\",9) 
43.
				Endif 
44.
			Endif 
45.
		WEnd 
46.
	EndIf 
47.
	FileClose($search) 
48.
	Sleep($CHECKINTERVALL * 1000) 
49.
WEnd 
50.
 
51.
 
52.
 
53.
; Variables for Function _INetSmtpMailCom 
54.
;################################## 
55.
;~ $SmtpServer = ""                            ; address for the smtp-server to use - REQUIRED 
56.
;~ $FromName = "User"                          ; name from who the email was sent 
57.
;~ $FromAddress = ""                           ; address from where the mail should come 
58.
;~ $ToAddress = ""                             ; destination address of the email - REQUIRED 
59.
;~ $Subject = "testsubject"                       ; subject from the email - can be anything you want it to be 
60.
;~ $Body = "This Is The Body"                  ; the messagebody from the mail - can be left blank but then you get a blank mail 
61.
;~ $AttachFiles = ""                           ; the file you want to attach- leave blank if not needed 
62.
;~ $CcAddress = ""                             ; address for cc - leave blank if not needed 
63.
;~ $BccAddress = ""                            ; address for bcc - leave blank if not needed 
64.
;~ $Importance = "Normal"                      ; Send message priority: "High", "Normal", "Low" 
65.
;~ $Username = ""                              ; username for the account used from where the mail gets sent - REQUIRED 
66.
;~ $Password = ""                              ; password for the account used from where the mail gets sent - REQUIRED 
67.
;~ $IPPort = 25                               ; port used for sending the mail 
68.
 
69.
;~ $ssl=0                                   ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS 
70.
 
71.
 
72.
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) 
73.
    Local $objEmail = ObjCreate("CDO.Message") 
74.
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' 
75.
    $objEmail.To = $s_ToAddress 
76.
    Local $i_Error = 0 
77.
    Local $i_Error_desciption = "" 
78.
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress 
79.
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress 
80.
    $objEmail.Subject = $s_Subject 
81.
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then 
82.
        $objEmail.HTMLBody = $as_Body 
83.
    Else 
84.
        $objEmail.Textbody = $as_Body & @CRLF 
85.
    EndIf 
86.
    If $s_AttachFiles <> "" Then 
87.
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") 
88.
        For $x = 1 To $S_Files2Attach[0] 
89.
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) 
90.
            ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console 
91.
            If FileExists($S_Files2Attach[$x]) Then 
92.
                $objEmail.AddAttachment ($S_Files2Attach[$x]) 
93.
            Else 
94.
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) 
95.
                SetError(1) 
96.
                Return 0 
97.
            EndIf 
98.
        Next 
99.
    EndIf 
100.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
101.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer 
102.
    If Number($IPPort) = 0 then $IPPort = 25 
103.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort 
104.
    ;Authenticated SMTP 
105.
    If $s_Username <> "" Then 
106.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
107.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username 
108.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password 
109.
    EndIf 
110.
    If $ssl Then 
111.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 
112.
    EndIf 
113.
    ;Update settings 
114.
    $objEmail.Configuration.Fields.Update 
115.
    ; Set Email Importance 
116.
    Switch $s_Importance 
117.
        Case "High" 
118.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High" 
119.
        Case "Normal" 
120.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal" 
121.
        Case "Low" 
122.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low" 
123.
    EndSwitch 
124.
    $objEmail.Fields.Update 
125.
    ; Sent the Message 
126.
    $objEmail.Send 
127.
    If @error Then 
128.
        SetError(2) 
129.
    EndIf 
130.
    $objEmail="" 
131.
EndFunc   ;==>_INetSmtpMailCom
Viel Spaß

Grüße Uwe
Bitte warten ..
Mitglied: askando
18.12.2013, aktualisiert um 17:25 Uhr
Hey!

@ Chris
Also die PDF und die zugehörige txt Datei haben den selben Namen, der jedoch bedingt durch Auftragsnummer variiert.

Beispielsweise:
NameStandort_Auftragsnummer.pdf (Anhang); NameStandort_Auftragsnummer.txt

Dies ist der Inhalt der Textdatei
01.
::Name Empfänger, Faxnummer  
02.
::A=Name der PDF (Anhang), fr=Absender Emailadresse#
@ Uwe
Vielen Dank! In der Zeile 9 wird quasi eine konstante Emailadresse zum versenden via smtp angegeben. Jedoch müsste ich genau an der Stelle einen Wert aus der zugehörigen txt. auslesen. Ebenso in der Zeile 10, dort müsste quasi die Faxnummer ausgelesen werden und @faxmaker.com dahinter hinzugefügt werden.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 18.12.2013, aktualisiert um 17:27 Uhr
Zitat von askando:
@ Uwe
Vielen Dank! In der Zeile 9 wird quasi eine konstante Emailadresse zum versenden via smtp angegeben. Jedoch müsste ich genau
an der Stelle einen Wert aus der zugehörigen txt. auslesen. Ebenso in der Zeile 10, dort müsste quasi die Faxnummer
ausgelesen werden und @faxmaker.com dahinter hinzugefügt werden.
ist das der korrekt formatierte Inhalt deiner Textdatei?
::Name Empfänger, Faxnummer 
::A=Name der PDF (Anhang), fr=Absender Emailadresse
bitte benutze Tags um das hier einzustellen, damit keine Sonderzeichen unterschlagen werden.
Bitte warten ..
Mitglied: askando
18.12.2013, aktualisiert um 17:37 Uhr
Ja Colinardo!

Genauso sehen die Inhalte der Textdateien aus!
Bitte warten ..
Mitglied: colinardo
LÖSUNG 18.12.2013, aktualisiert um 17:34 Uhr
Zitat von askando:
Genauso sehen die Inhalte der Textdateien aus!
OK ist oben im Script angepasst...
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...