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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 89427
Url: https://administrator.de/contentid/89427
Ausgedruckt am: 19.11.2024 um 22:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo CK,
blat eignet sich hierzu hervorragend. Verwende folgenden Code:
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
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
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
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
??
?? 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
Er schreibt doch - er ist Newbie.....
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
Er schreibt doch - er ist Newbie.....
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)
Zweite Batchdatei (läuft zwischen 06:00 und 18:00 uhr alle 15 Minuten):
Gruß
Larz
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
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.
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.
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.
Aber eleganter ist natürlich eine dir/b For Schleife....
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....