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
Vielen Dank vorrab!
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!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 236418
Url: https://administrator.de/contentid/236418
Ausgedruckt am: 25.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo hoffi3d!
Ganz allgemein: Um alle Unterordner eines Ordners durchzugehen kannst Du
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:
Ansonsten noch 2 Hinweise:
Grüße
bastla
Ganz allgemein: Um alle Unterordner eines Ordners durchzugehen kannst Du
for /d %%u in (*) do (
echo Unterordner: %%u
dir /s/b "%%u"
)
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
)
- 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"
bastla
Hallo hoffi3d!
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
erstellen und die Variablen wieder mit
einlesen ...
Grüße
bastla
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 mitfor /d %%u in (*) do (
pushd "%%u"
echo Jetzt ist der Unterordner "!cd!" aktuell und alle Dateien sind ohne Pfadangabe erreichbar
popd
)
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
for /f "delims=" %%i in (config.txt) do set "%%i"
Grüße
bastla