centerkane
Goto Top

Wer hat Lust mit mir eine Skript zu schreiben?

Hallo, ich bin leider kein Programmierer würde mir jedoch gerne eine Funktion erstellen. Ich muss regelmässig Dateien in Ordnern speichern und diese per E-Mail verschicken - nun würde ich gerne ein Skript haben mit dem sämtliche Funktionen automatisiert ablaufen. Hat jemand Lust mir zu helfen und mir den Skript-Code erstellen oder Tips geben wie ich das erstellen kann.

Fuktionsbeschreibung:

Das Skript sollte alle 15 min einen bestimmten Ordner prüfen ob eine PDF-Datei drin ist. Wenn keine PDF drin ist - soll es gar nichts machen.

Sollte eine PDF drin sein, soll es eine Kopie in einem Ordner auf dem Server erstellen und das original per E-Mail an einen bestimmten (dem Ordner zugewießenen Kunden) verschicken. Anschließend sollte das Skript den Ordner leeren und nach 15 min wider von vorne beginnen.


Ich selbst habe dabei an blat gedacht und habe dazu eine Prog (blatguy 0.9.0.25) gefunden das mir ein skript erstellt.

Das würde ich als Basis nehmen und müsste anschließend modifiziert werden:

So sieht es aus:

Name: blatguy.cmd

Zeile1:
Blat -install NamePC.NAMEDOMÄNE.local E-Mail@ADRESSE.de

Zeile2
Blat "C:\blat262\body.txt" -to Empfänger@E-Mail-Adresse.de -server mail.gmx.net (o.anderer) -u VERSAND@E-Mail-Adresse -pw 1234567- Passwort -attach "C:\blat262\Ordner\*.pdf" -debug -timestamp -log blatSMTPlog.txt -subject "Bezeichnung wie gewünscht"


Das ganze funktioniert leider nur wenn die Datei für den Versand und die "blat.exe" im gleichen Ordner sind, sonst verschickt er die Datei nicht.

Muss ich jetzt in jedem Ordner eine Blat.exe erstellen aus dem später versendet werden soll? - oder gibt es eine Möglichkeit das er auf die blat.exe zugreift?


Ebenfalls wird hier logischer weise keine Kopie erstellt (auf dem Server) und auch anschließend wird das PDF nicht gelöscht.

Hat jemand eine IDEE???


Folgende Probleme müssen gelöst werden:

1. Das ganze müsste automatisiert werden (alle 15 min) - momentan muss der User auf die cmd-Datei drücken um das ganze auszuführen.

2. Der Ordner muss unabhängig von dem Standort der blat.exe werden um über dieselbige zu versenden.

3. Es muss eine Kopie erstellt werden (auf dem Server)

4. Die Datei müsste über die E-Mail versand werden.

5. anschließend müsste die Ursprungs-Datei gelöscht werden


Hat hierzu jemand vieleicht eine Idee - oder kennt jemand ein Prog das das ganze sowiso macht.

Oder vieleicht hat ja auch jemand Lust in seiner Freizeit mir zu helfen!

Das ganze könnte über blat laufen - vieleicht hat aber jemand eine bessere Idee.

Das größte Problem mit blat ist das man nicht sieht wenn etwas nicht versendet wurde.

Daher wäre Outlook geschickter - Nur dummerweise habe ich keine Ahnung ob sowas mit Outlook funktionieren könnte.

Wenn jemand eine Idee hat - ich währe euch für jede Hilfe dankbar.

Gruß

CK

Content-ID: 89427

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

Ausgedruckt am: 19.11.2024 um 22:11 Uhr

Larz
Larz 09.06.2008 um 14:47:51 Uhr
Goto Top
Hallo CK,

blat eignet sich hierzu hervorragend. Verwende folgenden Code:

REM Lösche letzte Log-Datei
DEL PDFSendLog.txt

IF NOT EXIST Datei.pdf GOTO FALSE 

blat.exe Datei.pdf -to Test@Testmail.com -subject "Betreff der Mail" -Server smtp.mailserver.de -f Absenderadresse -u Absenderadresse -pw Password >> PDFSendLog.txt  
EXIT

:FALSE
ECHO Keine PDF-Datei vorhanden >> PDFSendLog.txt
EXIT

Du solltest einen geplanten Task einrichten der alle 15 Minuten die Batch-Datei aufruft. Blat.exe kann in einem beliebigen Verzeichnis liegen, einfach den Pfad davor schreiben.
In der PDFSendLog.txt kannst Du sehen, wenn nichts versendet wurde weil keine Datei vorhanden war.

Gruß
Larz
60730
60730 09.06.2008 um 15:11:02 Uhr
Goto Top
Servus,

ganz banale und wichtige Frage vorher - mit "was" erstellst du die PDF?

"Große" PDFs benötigen einige zeit, um komplett "ausgedruckt" / gespeichert zu werden.

Ich hab so ein Skript (für sehr große PDFs) für Acrobat erstellt und frage vorher, ob in der .log auch "completed" drin steht.

Im Zweifelsfall kann es passieren, das dein Skript sonst eine unvollständige PDF vermailt, kopiert und das Original später löscht.
Wenn du das PDF nicht mit Adobe erstellst - müsstest du vorher sicherstellen, das niemand (PDF Drucker) noch darauf zugreift.
Blat kenn ich nicht, ich nutze Bmail und wahrscheinlich kann Blat genauso wie Bmail auch Dateianhänge außerhalb des .exe Ordners verschicken.
Im Zweifel kommen die .exe eh in %systemroot% ein face-wink
centerkane
centerkane 09.06.2008 um 15:17:41 Uhr
Goto Top
VIELEN VIELEN DANK @ Larz

= Ich werde es gleichmal ausprobieren!!!

- Werde dir morgen berichten ob das so klappt!

Danke und bis morgen

Gruß

ck
60730
60730 09.06.2008 um 15:21:49 Uhr
Goto Top
??

Ich werde es gleichmal ausprobieren!!!

?? das ist mehr oder weniger der gleiche "text", wie du Ihn gepostet hast - weder ein copy noch eine Fehler überprüfung passiert da.
@Larz
Ein Log, das erzeugt wird und später (vorher) gelöscht wird, ohne vermailt oder sonstwie verarbeitet wird, macht keinen Sinn face-wink
Er schreibt doch - er ist Newbie.....
centerkane
centerkane 09.06.2008 um 15:25:25 Uhr
Goto Top
Hallo TimoBeil,

die PDF`s werden nicht so groß (meist nur zwei Seiten - kann aber auch bis 7 oder 8 werden = eher selten)

Die Dateien bekomm ich aus eine Prog. auf derren Inhalt ich keinen Zugriff habe = heisst ist nicht offen Programmiert (spezial Software) = Ich speichere die Dateien momentan händsch in den entsprechenden Ordner.

Die Batch Datei würde mir nur das verteilen und versenden abnehmen.

Beispiel:

folgende Ordner sind auf meinem PC :

Ordner Kunde A
Ordner Kunde B
Ordner Kunde C
usw...

jetzt öffne ich die Datei / in dem Programm öffnet sich wenn ich rechte Maustaste auf einer gewissen Zeile klicke ein ein Dialog - wo ich PDF-Erstellen auswählen kann (PDF wird dann im Adobe Reader angezeigt und von mir abgespeichert).

Dann speichere ich je nachdem für welchen Kunden es ist die Datei in Odner Kunde A ; B oder C.

Anschließend versende ich die Datei per E-Mail (Outlook) und speichere die Datei zur Sicherheit auf dem Server.

Zum Schluss lösche ich die Original Datei.

Das Skript würde mir nur einiges an täglicher Arbeit abnehmen.

Werd sobald wie möglich das Skript von Larz ausprobieren - bin sehr gespannt.

Werde morgen bescheid geben wie alles funkt.


Danke und Gruß

ck
Larz
Larz 09.06.2008 um 15:41:34 Uhr
Goto Top
Ok, ok, nochmal mit etwas mehr Erläuterung:
Die Log-Datei dient nur dazu mal zu prüfen, was beim letzten Lauf passiert ist.
Alternative: einen Tag lang in die Log-Datei schreiben lassen und diese morgens löschen oder umbenennen lassen.

Beispiel:

Erste Batch-Datei (läuft um 00:00 Uhr)
REM Lösche letzte Log-Datei
DEL PDFSendLog.txt

Zweite Batchdatei (läuft zwischen 06:00 und 18:00 uhr alle 15 Minuten):
IF NOT EXIST Pfad\Datei.pdf GOTO FALSE 

REM Mail senden
blat.exe Pfad\Datei.pdf -to Test@Testmail.com -subject "Betreff der Mail" -Server smtp.mailserver.de -f Absenderadresse -u Absenderadresse -pw Password > PDFSendLog.txt  

REM Kopieren der Datei auf den Server
XCOPY Pfad\Datei.pdf \\Servername\Freigabe\Datei.pdf

REM Löschen der Originaldatei
DEL Pfad\Datei.pdf 

EXIT

:FALSE
ECHO Keine PDF-Datei vorhanden > PDFSendLog.txt
REM Sende Info an Empfänger
blat.exe blat.exe -body "Datei existiert nicht oder konnte nicht erreicht werden!" -to Test@Testmail.com -subject "Betreff der Mail" -Server smtp.mailserver.de -f Absenderadresse -u Absenderadresse -pw Password > PDFSendLog.txt  
EXIT

Gruß
Larz
Genios
Genios 09.06.2008 um 16:39:49 Uhr
Goto Top
Schau Dir mal FreePDF XP an, da kannst Du BATCH Dateien an die Erstellung eines PDF anhängen und direkt ausführen lassen. Das ganze Konstrukt kannst Du dann als Drucker abspeichern der wie ein üblicher Drucker angesteuert wird. Als Beispiel:
Datei drucken -> Drucker = Mailversand
der Drucker erzeugt die GS Datei, erstellt das PDF und startet dann automatisch das BATCH welches die Datei per Mail versendet. Damit ist die Prüfung weg. Die Idee von Dir ist nicht schlecht, aber was machst Du wenn zwei Dateien in dem Ordner liegen, wenn ich das richtig verstanden habe besteht die Möglichkeit das sowas passiert.
centerkane
centerkane 09.06.2008 um 18:00:34 Uhr
Goto Top
Hallo Genios,

die Idee ist Klasse! - Nur wahrscheinlich nicht umsetzbar.

Mein Probl. ist das die Datei an verschiedene Kunden und in verschiedene Ordner (Kunden bezogen) gespeichert werden soll.

D.H. ich müsste die PDF auslesen können welcher Kunde verwendet wird und es dann entsprechend an die Kunden E-Mail versenden und in den Kunden Ordner speichern.

Ich denke das wird nicht möglich sein. Bzw. mit unglaublichen Aufwand.

Wenn es immer der gleiche Empfänger wäre ware es echt Klasse!


Ich würde für jeden Kunden (Kunde A, Kunde B, Kunde C, usw...) einen eigenen Ordner erstellen (Ordner A, Ordner B, Ordner C, usw...). Manuell (Händisch) würde ich die geöffnete Datei in dem entsprechenden Ordner speichern (Gefährlich nur die eigenen Fehler) + Drucken *.

Anschließend sollte das Skript (für jeden Kunden ein eigenes / bzw. für jeden Kundenordner ein eigenes) den Ordner alle 15 min auslesen ob eine Datei vorhanden und diese per E-Mail an den Kunden schicken + Kopie auf den Server.

Hier kann es natürlich auch vorkommen das man mehrere Dateien in den Ordner legt und das die innenliegenden Dateien (alles PDF) mehr als 3 Seiten haben (mehr als 10 habe ich jedoch noch nie erlebt).

Das grösste Problem ist - ich weiss zwar was ich will - ich habe nur ÜBERHAUPT KEINE AHNUNG wie ich dies umsetze. Selbst newbe ist noch übertrieben.

Ich habe keine Ahnung wie eine batch Datei geschrieben wird, (nicht mal mit welchem Prog / Arbeite zur Zeit mit dem Editor und speichere es entsprechend ab) ebenfalls weiss ich nicht wo und wie die Datei hinterlegt werden muss das Sie alle 15 min oder alle 24 h ausgeführt wird.

Das ist aber noch das kleinste Probl. da ich ja noch nichtmal eine funktionierende Datei habe.

Ich bin momentan noch am rumbrobieren mit dem Prog. von Larz, hat aber noch nicht funktioniert. - Egal ich versuchs weiter - wird ja irgendwie schon gehen.

Momentan denke ich das es mit blat und für jeden Ordner ein Skript am besten funktionieren müsste.

Aber ich lasse mich gerne überzeugen! face-wink

  • Die Möglichkeit des zusätzlichen automatisierten Drucken währe natürlich Klasse, da ich diese immer ausdrucke (als Kopie) für die Akten.



Danke und Gruß

ck
60730
60730 09.06.2008 um 18:27:16 Uhr
Goto Top
Ich nochmal...

Wenn man die Idee von Genius weiterverfolgt - könnte es auch so gehen, daß du pro Kunden einen Drucker anlegst.
Nur mal so als Idee.

Grundsätzlich ist dein Anliegen aber kein Problem.
Mit der Aussage "große" Dokumente meinte ich natürlich das es ein Problem werden kann wenn haargenau dann, wenn das Dokument noch erzeugt wird es von dem Script verarbeitet wird.

Aber auch das ist kein großes Thema - wenn man weiß das es so ist.
Einfach vorher umbenennen und im Fehlerfall weiß man ja - daß das Dokument noch in Bearbeitung war und die Schleife wiederholen soll.

Ich stell mir eine Lösung so vor:

Ordnernamen sind hinterlegt und wenn in Ordner Kunde1 etwas gefunden wird, dann ist der Parameter von der sendto Adresse Kunde1@seine Domain.
Dann die pdf umbenennen und auf Errorlevel prüfen.
Vermailen Kopieren und dann löschen.

:start
if exist D:\PDF\kunde1\*.pdf 		set quelle=D:\PDF\kunde1\
if exist D:\PDF\kunde1\*.pdf 		set ziel=\\server\!kunde1\
if exist D:\PDF\kunde1\*.pdf 		set mail=kunde1@testdomain.local

if %quelle% EQU 0 goto start
@echo Pdf in %quelle% gefunden - wird nach %ziel% kopiert
@copy %quelle%\*.pdf %ziel%
Blat "C:\blat262\body.txt" -to %mail% -server mail.gmx.net (o.anderer) -u VERSAND@E-Mail-Adresse -pw 1234567- Passwort -attach "quelle*.pdf" -debug -timestamp -log blatSMTPlog.txt -subject "Bezeichnung wie gewünscht"  

Aber eleganter ist natürlich eine dir/b For Schleife....