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

Mailing via blat aus verschiedenen Ordnern

Frage Entwicklung Batch & Shell

Mitglied: hoffi3d

hoffi3d (Level 1) - Jetzt verbinden

25.04.2014 um 07:54 Uhr, 832 Aufrufe, 3 Kommentare

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


01.
@Echo off 
02.
Mode con cols=150 lines=50 
03.
Set Beginn=%time% 
04.
set config=D:\CMD_BAT\versand\config.txt 
05.
 
06.
for /f "delims== tokens=1,2" %%i in ('findstr "blat_exe" %config%') do set blat=%%j 
07.
for /f "delims== tokens=1,2" %%i in ('findstr "mailserver" %config%') do set server=%%j 
08.
for /f "delims== tokens=1,2" %%i in ('findstr "absender" %config%') do set sender=%%j 
09.
for /f "delims== tokens=1,2" %%i in ('findstr "workdir" %config%') do set workdir=%%j 
10.
for /f "delims== tokens=1,2" %%i in ('findstr "absender" %config%') do set absender=%%j 
11.
for /f "delims== tokens=1,2" %%i in ('findstr "logdir" %config%') do set logdir=%%j 
12.
set logdir=%workdir%%logdir% 
13.
for /f "delims== tokens=1,2" %%i in ('findstr "mail_to_datei" %config%') do set mail_to_datei=%%j 
14.
set mail_to_datei=%workdir%%mail_to_datei% 
15.
for /f "delims== tokens=1,2" %%i in ('findstr "mail_bcc_datei" %config%') do set mail_bcc_datei=%%j 
16.
set mail_bcc_datei=%workdir%%mail_bcc_datei% 
17.
for /f "delims== tokens=1,2" %%i in ('findstr "temp_datei" %config%') do set temp=%%j 
18.
set temp=%workdir%%temp% 
19.
for /f "delims== tokens=1,2" %%i in ('findstr "mail_log_datei" %config%') do set mail_log_datei=%%j 
20.
set mail=%logdir%%date%%mail_log_datei% 
21.
for /f "delims== tokens=1,2" %%i in ('findstr "topicdatei" %config%') do set topicdatei=%%j 
22.
set topicdatei=%workdir%%topicdatei% 
23.
for /f "delims== tokens=1,2" %%i in ('findstr "ordnerdatei" %config%') do set ordnerdatei=%%j 
24.
set ordnerdatei=%workdir%%ordnerdatei% 
25.
for /f "delims== tokens=1,2" %%i in ('findstr "body" %config%') do set body=%%j 
26.
 
27.
set name1=Controlling 
28.
set name2=Verkauf 
29.
 
30.
 
31.
set ordner1=%workdir%%name1% 
32.
set ordner2=%workdir%%name2% 
33.
 
34.
 
35.
for /f "delims== tokens=1,2" %%i in ('findstr "%name1%" %mail_to_datei%') do set to1=%%j 
36.
for /f "delims== tokens=1,2" %%i in ('findstr "%name2%" %mail_to_datei%') do set to2=%%j 
37.
 
38.
for /f "delims== tokens=1,2" %%i in ('findstr "%name1%" %mail_bcc_datei%') do set bcc1=%%j 
39.
for /f "delims== tokens=1,2" %%i in ('findstr "%name2%" %mail_bcc_datei%') do set bcc2=%%j 
40.
 
41.
set /P tag_entladung=Bitte Auswertungstag fuer %name1% eingeben:  
42.
 
43.
set /P tag_tageskennzahlen=Bitte Auswertungstag fuer %name2% eingeben:  
44.
 
45.
set Versandordner=%ordner1% 
46.
set to=%to1% 
47.
set bcc=%bcc1% 
48.
set Topic=%Name1% 
49.
set anhang= 
50.
 
51.
 
52.
dir /b %versandordner% > %temp% 
53.
 
54.
 
55.
for /f %%x in (%temp%) do set anhang=!anhang!,%versandordner%\%%x  
56.
set anhang=%anhang:~1% 
57.
set anhang=%anhang: =% 
58.
 
59.
%blat% -body "%body%"   -server %server% -to %to% -bcc %bcc% -f %sender% -s "%topic%" -attach %Anhang% >> %mail% 
60.
 
61.
 
62.
set Versandordner=%ordner2% 
63.
set to=%to2% 
64.
set bcc=%bcc2% 
65.
set Topic=%Name2% - %tag_entladung% 
66.
set anhang= 
67.
 
68.
dir /b %versandordner% > %temp% 
69.
 
70.
 
71.
for /f %%x in (%temp%) do set anhang=!anhang!,%versandordner%\%%x  
72.
set anhang=%anhang:~1% 
73.
set anhang=%anhang: =% 
74.
 
75.
%blat% -body "%body%"   -server %server% -to %to% -bcc %bcc% -f %sender% -s "%topic%" -attach %Anhang% >> %mail%
Vielen Dank vorrab!
Mitglied: bastla
25.04.2014 um 10:55 Uhr
Hallo hoffi3d!

Ganz allgemein: Um alle Unterordner eines Ordners durchzugehen kannst Du
01.
for /d %%u in (*) do ( 
02.
    echo Unterordner: %%u 
03.
    dir /s/b "%%u" 
04.
)
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:
01.
for /d %%u in (*) do ( 
02.
    echo Unterordner: %%u 
03.
    pushd "%%u" 
04.
    dir /b 
05.
    popd 
06.
)
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
Bitte warten ..
Mitglied: hoffi3d
25.04.2014 um 12:35 Uhr
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:
01.
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?
Bitte warten ..
Mitglied: bastla
25.04.2014, aktualisiert um 16:10 Uhr
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
01.
for /d %%u in (*) do ( 
02.
    pushd "%%u" 
03.
    echo Jetzt ist der Unterordner "!cd!" aktuell und alle Dateien sind ohne Pfadangabe erreichbar 
04.
    popd 
05.
)
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Dateien aus verschiedenen Arrays - Attribute vergleichen (5)

Frage von Giffas zum Thema Batch & Shell ...

LAN, WAN, Wireless
IP-Cam aus verschiedenen VLANs (2)

Frage von NoobOne zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...