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

Wer hat Lust mit mir eine Skript zu schreiben?

Frage Entwicklung Batch & Shell

Mitglied: centerkane

centerkane (Level 1) - Jetzt verbinden

09.06.2008, aktualisiert 18:27 Uhr, 6445 Aufrufe, 9 Kommentare

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
Mitglied: Larz
09.06.2008 um 14:47 Uhr
Hallo CK,

blat eignet sich hierzu hervorragend. Verwende folgenden Code:

01.
REM Lösche letzte Log-Datei 
02.
DEL PDFSendLog.txt 
03.
 
04.
IF NOT EXIST Datei.pdf GOTO FALSE  
05.
 
06.
blat.exe Datei.pdf -to Test@Testmail.com -subject "Betreff der Mail" -Server smtp.mailserver.de -f Absenderadresse -u Absenderadresse -pw Password >> PDFSendLog.txt 
07.
EXIT 
08.
 
09.
:FALSE 
10.
ECHO Keine PDF-Datei vorhanden >> PDFSendLog.txt 
11.
EXIT 
12.
 
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
Bitte warten ..
Mitglied: 60730
09.06.2008 um 15:11 Uhr
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
Bitte warten ..
Mitglied: centerkane
09.06.2008 um 15:17 Uhr
VIELEN VIELEN DANK @ Larz

= Ich werde es gleichmal ausprobieren!!!

- Werde dir morgen berichten ob das so klappt!

Danke und bis morgen

Gruß

ck
Bitte warten ..
Mitglied: 60730
09.06.2008 um 15:21 Uhr
??

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.....
Bitte warten ..
Mitglied: centerkane
09.06.2008 um 15:25 Uhr
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
Bitte warten ..
Mitglied: Larz
09.06.2008 um 15:41 Uhr
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)
01.
REM Lösche letzte Log-Datei 
02.
DEL PDFSendLog.txt
Zweite Batchdatei (läuft zwischen 06:00 und 18:00 uhr alle 15 Minuten):
01.
IF NOT EXIST Pfad\Datei.pdf GOTO FALSE  
02.
 
03.
REM Mail senden 
04.
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 
05.
 
06.
REM Kopieren der Datei auf den Server 
07.
XCOPY Pfad\Datei.pdf \\Servername\Freigabe\Datei.pdf 
08.
 
09.
REM Löschen der Originaldatei 
10.
DEL Pfad\Datei.pdf  
11.
 
12.
EXIT 
13.
 
14.
:FALSE 
15.
ECHO Keine PDF-Datei vorhanden > PDFSendLog.txt 
16.
REM Sende Info an Empfänger 
17.
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 
18.
EXIT
Gruß
Larz
Bitte warten ..
Mitglied: Genios
09.06.2008 um 16:39 Uhr
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.
Bitte warten ..
Mitglied: centerkane
09.06.2008 um 18:00 Uhr
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!

  • 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
Bitte warten ..
Mitglied: 60730
09.06.2008 um 18:27 Uhr
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.

01.
:start 
02.
if exist D:\PDF\kunde1\*.pdf 		set quelle=D:\PDF\kunde1\ 
03.
if exist D:\PDF\kunde1\*.pdf 		set ziel=\\server\!kunde1\ 
04.
if exist D:\PDF\kunde1\*.pdf 		set mail=kunde1@testdomain.local 
05.
 
06.
if %quelle% EQU 0 goto start 
07.
@echo Pdf in %quelle% gefunden - wird nach %ziel% kopiert 
08.
@copy %quelle%\*.pdf %ziel% 
09.
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....
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 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
gelöst Loginzeiten aus dem Ereignisprotokoll in Excel schreiben (1)

Frage von l-Ne0n zum Thema Batch & Shell ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
Powershell CHAT Skript (5)

Frage von xpxy15 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

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 ...