hoffi3d
Goto Top

Mailing via blat aus verschiedenen Ordnern

Guten Morgen,

ich habe folgendes anliegen. Ich möchte ein Mailing via Blat.exe (http://www.blat.net/) erstellen.

Ausgangslage ist folgende, ich habe in einem Ordner eine .txt Datei für den Betreff, eine für die Empfänger und eine für die .bcc´s!
Dann möchte ich Unterordner anlegen die z.B. Verkauf, Controlling etc. heissen in diesen Liegen dann x Dateien die an den Empfängerkreis für eben diesen Ordner versandt werden!


Ordner Versand mit Betreff.txt, to_empfaenger.txt, bcc_empfaenger.txt
=> Unterordner Controlling mit x Dateien
=> Unterordner Verkauf mit x Dateien


Nun ist es so, das ich dieses Gerüst schon "starr" hinbekommen habe. Ich hätte es aber gerne flexibel also dass der Nutzer sich neue Unterordner anlegen kann und das System diese dann einfach ausliest! Natürlich muss der Nutzer auch Betreff/Empfänger und BCC ergänzen....!

Meine .bat sieht derzeit wie folgt aus(ich weiß sicher nicht optimal....)

Eingangs ziehe ich meine Variablen zu großen Teilen aus einer config.txt


@Echo off
Mode con cols=150 lines=50
Set Beginn=%time%
set config=D:\CMD_BAT\versand\config.txt

for /f "delims== tokens=1,2" %%i in ('findstr "blat_exe" %config%') do set blat=%%j  
for /f "delims== tokens=1,2" %%i in ('findstr "mailserver" %config%') do set server=%%j  
for /f "delims== tokens=1,2" %%i in ('findstr "absender" %config%') do set sender=%%j  
for /f "delims== tokens=1,2" %%i in ('findstr "workdir" %config%') do set workdir=%%j  
for /f "delims== tokens=1,2" %%i in ('findstr "absender" %config%') do set absender=%%j  
for /f "delims== tokens=1,2" %%i in ('findstr "logdir" %config%') do set logdir=%%j  
set logdir=%workdir%%logdir%
for /f "delims== tokens=1,2" %%i in ('findstr "mail_to_datei" %config%') do set mail_to_datei=%%j  
set mail_to_datei=%workdir%%mail_to_datei%
for /f "delims== tokens=1,2" %%i in ('findstr "mail_bcc_datei" %config%') do set mail_bcc_datei=%%j  
set mail_bcc_datei=%workdir%%mail_bcc_datei%
for /f "delims== tokens=1,2" %%i in ('findstr "temp_datei" %config%') do set temp=%%j  
set temp=%workdir%%temp%
for /f "delims== tokens=1,2" %%i in ('findstr "mail_log_datei" %config%') do set mail_log_datei=%%j  
set mail=%logdir%%date%%mail_log_datei%
for /f "delims== tokens=1,2" %%i in ('findstr "topicdatei" %config%') do set topicdatei=%%j  
set topicdatei=%workdir%%topicdatei%
for /f "delims== tokens=1,2" %%i in ('findstr "ordnerdatei" %config%') do set ordnerdatei=%%j  
set ordnerdatei=%workdir%%ordnerdatei%
for /f "delims== tokens=1,2" %%i in ('findstr "body" %config%') do set body=%%j  

set name1=Controlling
set name2=Verkauf


set ordner1=%workdir%%name1%
set ordner2=%workdir%%name2%


for /f "delims== tokens=1,2" %%i in ('findstr "%name1%" %mail_to_datei%') do set to1=%%j  
for /f "delims== tokens=1,2" %%i in ('findstr "%name2%" %mail_to_datei%') do set to2=%%j  

for /f "delims== tokens=1,2" %%i in ('findstr "%name1%" %mail_bcc_datei%') do set bcc1=%%j  
for /f "delims== tokens=1,2" %%i in ('findstr "%name2%" %mail_bcc_datei%') do set bcc2=%%j  

set /P tag_entladung=Bitte Auswertungstag fuer %name1% eingeben: 

set /P tag_tageskennzahlen=Bitte Auswertungstag fuer %name2% eingeben: 

set Versandordner=%ordner1%
set to=%to1%
set bcc=%bcc1%
set Topic=%Name1%
set anhang=


dir /b %versandordner% > %temp%


for /f %%x in (%temp%) do set anhang=!anhang!,%versandordner%\%%x 
set anhang=%anhang:~1%
set anhang=%anhang: =%

%blat% -body "%body%"   -server %server% -to %to% -bcc %bcc% -f %sender% -s "%topic%" -attach %Anhang% >> %mail%  


set Versandordner=%ordner2%
set to=%to2%
set bcc=%bcc2%
set Topic=%Name2% - %tag_entladung%
set anhang=

dir /b %versandordner% > %temp%


for /f %%x in (%temp%) do set anhang=!anhang!,%versandordner%\%%x 
set anhang=%anhang:~1%
set anhang=%anhang: =%

%blat% -body "%body%"   -server %server% -to %to% -bcc %bcc% -f %sender% -s "%topic%" -attach %Anhang% >> %mail%  

Vielen Dank vorrab!

Content-Key: 236418

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

Printed on: April 19, 2024 at 06:04 o'clock

Member: bastla
bastla Apr 25, 2014 at 08:55:08 (UTC)
Goto Top
Hallo hoffi3d!

Ganz allgemein: Um alle Unterordner eines Ordners durchzugehen kannst Du
for /d %%u in (*) do (
    echo Unterordner: %%u
    dir /s/b "%%u"  
)
verwenden.

Wenn es für Dich einfacher ist, kannst Du auch in jeden dieser Ordner hineinwechseln, sodass Du dann keine Pfade zu berücksichtigen hast:
for /d %%u in (*) do (
    echo Unterordner: %%u
    pushd "%%u"  
    dir /b
    popd
)
Ansonsten noch 2 Hinweise:
  • Das Verwenden von %temp% für einen Dateinamen ist suboptimal, da Du so die entsprechende Systemvariable überschreibst.
  • Jetzt die gute Nachricht: Wenn Du keinen anderen Grund für die Verwendung einer solchen Datei hast, als dort die Dateinamen der Anhänge zwischenzuspeichern, kannst Du sie gleich einsparen - es genügt in diesem Fall
for /f "delims=" %%x in ('dir /b "%versandordner%"') do set "anhang=!anhang!,%versandordner%\%%x"
Grüße
bastla
Member: hoffi3d
hoffi3d Apr 25, 2014 at 10:35:00 (UTC)
Goto Top
Hallo Bastla,

die Unterordner auslesen lassen bekomme ich inzwischen hin(wenn auch etwas anders).
Nur hapert es an der "Schleife" die mir die Empfänger, die Topics, die BCCs und die Anhänge zusammenschreibt und auch mail, ich habe ka wie ich diese zusammensetze:

Um die Unterordner mit Namen auslesen zu lassen:
dir /ad /b %workdir% > %ordnerdatei%

Müsste ja jetzt für jeden Unterordner die Dateien auslesen und nach den zugehörigen Empfängern + BCC´s suchen!

Nur wie am besten?
Member: bastla
bastla Apr 25, 2014 updated at 14:10:25 (UTC)
Goto Top
Hallo hoffi3d!
Müsste ja jetzt für jeden Unterordner die Dateien auslesen und nach den zugehörigen Empfängern + BCC´s suchen!
So what? Was für einen Ordner geht, geht auch für viele - und wie schon oben angeführt, kannst Du ja mit
for /d %%u in (*) do (
    pushd "%%u"  
    echo Jetzt ist der Unterordner "!cd!" aktuell und alle Dateien sind ohne Pfadangabe erreichbar  
    popd
)
vorübergehend in jeden der Unterordner wechseln und die dort liegenden Dateien verarbeiten ...

GGf verwendest Du eben für jeden Unterordner eine eigene "config.txt".

Zur Konfigurationsdatei auch noch eine Anmerkung: Wenn Du Variablen sinnvoll benennst, also etwa
%Mail_blat%
%Mail_sender%
%Mail_workdir%
kannst Du eine Konfigurationsdatei ganz einfach mit
set Mail_>config.txt
erstellen und die Variablen wieder mit
for /f "delims=" %%i in (config.txt) do set "%%i"
einlesen ...

Grüße
bastla