questionmark93
Goto Top

Neueste Datei anfügen.bat

Guten Morgen zusammen =)

Ich hätte da mal eine Frage und zwar

Ich würde gerne eine .bat erstellen die folgendes kann:


1. Eine Outlook Nachricht erstellen
2. Empfänger (sample@gmail.com) einfügen
3. Betreff: "Löhne" einfügen
4. In die Nachricht C:\DiesDas\PDF\alles\Neustes erstelltes PDF anfügen
5. In die Nachricht \\Server\Stick\Dokumente\Neuste erstellte Datei anfügen
6. Die Nachricht nicht senden, sondern im Feld für den Nachrichtentext stehen bleiben

würde das denn gehen?

Vielen Dank schon einmal im Voraus face-smile
Freundliche Grüße

Jeremy

Content-ID: 251020

Url: https://administrator.de/contentid/251020

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

colinardo
Lösung colinardo 06.10.2014 aktualisiert um 11:33:54 Uhr
Goto Top
Hallo Jeremy,
mit VBS geht das z.B. face-wink:
Dim strFile1,strFile2,objMail, fso, objOutlook
'---------------------------------------  
Const FOLDER1 = "C:\DiesDas\PDF\alles"  
Const FOLDER2 = "\\Server\Stick\Dokumente"  

Const MAILTO = "sample@gmail.com"  
Const SUBJECT = "Löhne"  
Const BODY = "Die Löhne finden sie im Anhang."  

'---------------------------------------  
Set fso = CreateObject("Scripting.Filesystemobject")  
Set objOutlook = CreateObject("Outlook.Application")  

strFile1 = getNewestFile(FOLDER1, "pdf")  
strFile2 = getNewestFile(FOLDER2, "")  

Set objMail = objOutlook.CreateItem(0)
With objMail
	.To = MAILTO
	.Subject = SUBJECT
	.Body = BODY
	If strFile1 = "" Then   
		MsgBox "Es wurde keine Datei in Ordner 1 gefunden", vbExclamation  
	Else
		.Attachments.Add strFile1
	End If
	If strFile2 = "" Then   
		MsgBox "Es wurde keine Datei in Ordner 2 gefunden", vbExclamation  
	Else
		.Attachments.Add strFile2
	End If
	.Display
End With

Set fso = Nothing
Set objOutlook = Nothing

Function getNewestFile(strFolder,strType)
	Set objFile = Nothing
	For Each file In fso.GetFolder(strFolder).Files
		If strType <> "" Then  
			If fso.GetExtensionName(file.Path) = strType Then
				If objFile Is Nothing Then
					Set objFile = file
				ElseIf (file.DateLastModified > objFile.DateLastModified) Then
					Set objFile = file
				End If
			End If
		Else
			If objFile Is Nothing Then
				Set objFile = file
			ElseIf (file.DateLastModified > objFile.DateLastModified) Then
				Set objFile = file
			End If
		End If
	Next
	If Not objFile Is Nothing Then
		getNewestFile = objFile.Path
	Else
		getNewestFile = ""  
	End If
End Function
Grüße Uwe
Questionmark93
Questionmark93 06.10.2014 um 11:34:48 Uhr
Goto Top
Perfekt das klappt prima, nun möchte ich aber bei den PDF Dateien noch, da es 2 neue Files sind, das es beide nimmt, ginge das auch? =)
colinardo
Lösung colinardo 06.10.2014 aktualisiert um 14:06:11 Uhr
Goto Top
Zitat von @Questionmark93:

Perfekt das klappt prima, nun möchte ich aber bei den PDF Dateien noch, da es 2 neue Files sind, das es beide nimmt, ginge
das auch? =)
Dim objMail, objOutlook,oList
'---------------------------------------  
Const FOLDER1 = "C:\Ordner1"  
Const FOLDER2 = "C:\Ordner2"  

Const MAILTO = "sample@gmail.com"  
Const SUBJECT = "Löhne"  
Const BODY = "Dein Body"  

'---------------------------------------  
Set objOutlook = CreateObject("Outlook.Application")  

Set objMail = objOutlook.CreateItem(0)
With objMail
	.To = MAILTO
	.Subject = SUBJECT
	.Body = BODY
	'Dateien im Ordner 1 einlesen  
	Set oList = getNewestFiles(FOLDER1,"pdf")  
	If oList.RecordCount > 0 Then
		oList.MoveFirst
		For i = 1 To oList.RecordCount
			If i = 3 Then Exit For
			.Attachments.Add oList.Fields("name").Value  
			oList.MoveNext
		Next
		oList.Close
	Else
		MsgBox "Keine entsprechenden Dateien im Ordner 1 gefunden"  
	End If
	'Dateien im Ordner 2 einlesen  
	Set oList = getNewestFiles(FOLDER2,"xml")  
	If oList.RecordCount > 0 Then
		oList.MoveFirst
		.Attachments.Add oList.Fields("name").Value  
		oList.Close
	Else
		MsgBox "Keine entsprechenden Dateien im Ordner 2 gefunden"  
	End If
	.Display
End With

Set objOutlook = Nothing
Set oList = Nothing
Set objMail = Nothing

'Bestimmte Dateien eines Verzeichnisses in ein Recordset einlesen und Absteigend nach Datum sortieren  
Function getNewestFiles(strFolder,strEXT)
	Set objList = CreateObject("ADOR.Recordset")  
	Set fso = CreateObject("Scripting.Filesystemobject")  
	objList.Fields.Append "name", 200, 255  
	objList.Fields.Append "date", 7  
	objList.Open
	For Each file In fso.GetFolder(strFolder).Files
		If fso.GetExtensionName(file.Path) = strEXT Then
			objList.AddNew
			objList("name").Value = file.Path  
			objList("date").Value = file.DateLastModified  
			objList.Update
		End If
	Next
	objList.Sort = "date DESC"  
	Set getNewestFiles = objList
	Set fso = Nothing
End Function
Questionmark93
Questionmark93 06.10.2014 um 13:27:04 Uhr
Goto Top
ich will beim 2ten, das er mir die letzte xml Datei ausgibt face-sad
ich bekomm das grad nicht auf die Reihe :D
colinardo
colinardo 06.10.2014 aktualisiert um 13:32:48 Uhr
Goto Top
Zitat von @Questionmark93:
ich will beim 2ten, das er mir die letzte xml Datei ausgibt face-sad
ich bekomm das grad nicht auf die Reihe :D
kommt alles tröpfchenweise bei dir ...schreib das oben doch gleich richtig in deinen Post face-sad
ist im letzten Post ensprechend angepasst ....
Questionmark93
Questionmark93 06.10.2014 um 13:41:53 Uhr
Goto Top
Vielen Vielen Dank face-smile