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
GELÖST

E-Mail mit Blat.exe

Frage Microsoft Windows Tools

Mitglied: 42020

42020 (Level 1)

25.05.2007, aktualisiert 18.10.2012, 17545 Aufrufe, 11 Kommentare

Hallo zusammen,

ich habe eine Frage zu dem Tool Blat.exe. Dieses kleine Programm verschickt automatisch e-mails mit Anhang. Da gehts auch scho los. Ich habe mir nämlich eine Excel-Tabelle zusammengestellt, die in der ersten Spalte Daten und in der zweiten Spalte eine Bemerkung dazu hat (z.B. 12.07.2007 Bemerkung).

Ist es möglich, dem Tool zu sagen, es soll in der Excel-Tabelle schauen ob ein Eintrag zum heutigen Datum vorhanden ist und mir ggf. eine e-mail mit der entsprechenden Bemerkung schickt?

Ich hoffe das dieser Beitrag verständlich ist!


Gruß und Danke für die Antworten!
Mitglied: TuXHunt3R
25.05.2007 um 21:25 Uhr
Bei einem Excel-File müsstest du sehrwarscheinlich VBScript zur Hand nehmen.


Bei einem Textfile könnte ein Batchscript so aussehen:

type liste.txt | find /i "%date%"
if errorlevel 0 (

blat (Optionen)

) else (
echo Kein Eintrag fuer das heutige Datum vorhanden
)

Weiss halt nicht, ob dir damit geholfen ist........
Bitte warten ..
Mitglied: broecker
25.05.2007 um 22:21 Uhr
wird denn, auch wenn es nichts zu bemerken gibt, etwas in die Datei geschrieben?
sonst könnte man doch einfach abends - abhängig vom letzten Zugriffsdatum gem. Dateisystem - eine Mail lossenden.
Bitte warten ..
Mitglied: bastla
25.05.2007 um 22:35 Uhr
Hallo MGA!

Ich kann mich TuXHunt3R's Ansicht (Bei einem Excel-File müsstest du sehrwarscheinlich VBScript zur Hand nehmen.) nur anschließen und Dir daher folgende Vorgangsweise vorschlagen:

Erstelle (zB in C:\Scripts) das folgende VB-Script "EintragZumDatum.vbs":
01.
Const ExcelDatei = "D:\Tageskommentar.xls" 
02.
If WScript.Arguments.Count < 1 Then WScript.Quit(1) 
03.
Dat = WScript.Arguments(0) 
04.
If Not IsDate (Dat) Then WScript.Quit(1) 
05.
Datum = CDate(Dat) 
06.
Set XL = WScript.CreateObject("Excel.Application") 
07.
XL.Workbooks.Open ExcelDatei 
08.
i = 3 'Zeilennummer der ersten Datenzeile 
09.
With XL.Worksheets(1) 
10.
	Do While .Cells(i,1).Value <> "" 
11.
		If .Cells(i,1).Value = Datum Then 
12.
			WScript.Echo .Cells(i,2).Value 
13.
			Exit Do 
14.
		End If 
15.
		i = i + 1 
16.
	Loop 
17.
End With 
18.
XL.ActiveWorkbook.Saved = True 
19.
XL.Application.Quit
Den Dateinamen der Exceldatei in der ersten Zeile des Scripts musst Du natürlich an Deine Gegebenheiten anpassen. Dies gilt auch für die erste Zeile der Exceltabelle (im Beispiel oben Zeile 3), die ein zu prüfendes Datum enthält.

Vorausgesetzt wird, dass die Spalte A ab der angegebenen Zeile (also zB 3) lückenlos die Datumseinträge enthält - eine leere Zelle in Spalte A wird als "Ende"-Kennzeichen des Datenbereiches interpretiert.

Das obige Script kannst Du dann wie folgt in einer Batch-Datei verwenden:
01.
@echo off & setlocal 
02.
set Bemerkung= 
03.
for /f "delims=" %%i in ('cscript //nologo C:\Scripts\EintragZumDatum.vbs %date%') do set "Bemerkung=%%i" 
04.
if not defined Bemerkung echo Kein Eintrag gefunden ... & goto :eof 
05.
echo blat mit Message %Bemerkung% starten ...
Anstelle von %date% kann auch ein bestimmtes Datum (in der Schreibweise TT.MM.JJJJ) übergeben werden.

Die beiden "echo"-Befehle dienen natürlich nur zu Demonstrationszwecken, die vorletzte Zeile könnte also zB auch mit
01.
if not defined Bemerkung goto :eof
kommentarlos die Batchdatei beenden.

Grüße
bastla
Bitte warten ..
Mitglied: 42020
26.05.2007 um 02:54 Uhr
Hallo,

Danke für die die schnellen Lösungsvorschläge!! Ich habe zwar beides ausprobiert, bin aber nicht zum Erfolg gekommen.
Wie setzte ich denn die von euch beschriebenen Batch-Dateien bzw. VBS-Scripte in den Blatguy ein? Geht das überhaupt? Oder muss ich auf die Kommandozeile wechseln?


Grüße,
MGA
Bitte warten ..
Mitglied: bastla
26.05.2007 um 10:09 Uhr
Hallo MGA!

Da "blat.exe" zumeist von der Kommandozeile aus eingesetzt wird, war ich davon ausgegangen, dass das auch bei Dir so wäre.

Die Batch-Script-Kombination könntest Du auch für "blatguy" verwenden, indem Du einfach die letzte Batch-Zeile in zB
01.
echo %Bemerkung%>"D:\Bodyfile.txt"
änderst. Dadurch wird die Datei "D:\Bodyfile.txt" mit der aus der Excel-Datei gelesenen Bemerkung neu erstellt. Falls Du mehr Text dazu benötigst, kannst Du diesen mit weiteren "echo"-Zeilen erstellen, zB
01.
echo Das war's für heute.>>"D:\Bodyfile.txt"
Wichtig ist dabei, mit ">>" den Text an die bestehende Datei anzuhängen, bzw nur beim ersten Mal mit ">" in die Datei zu schreiben (und sie damit neu zu erstellen).
Vielleicht beschreibst Du aber erst einmal die bisher von Dir vewendete Vorgangsweise etwas genauer.

Grüße
bastla
Bitte warten ..
Mitglied: 42020
26.05.2007 um 14:24 Uhr
Hi bastla,

1)
jetzt klappt´s!! Beim ersten mal hab ich irendwas falsch gemacht oder übersehen.
Eines hab ich aber noch nicht ganz verstanden bzw. es funktioniert bei mir net.
Meine Excel-Tabelle fängt bei A3 mit dem ersten Datum (26.05.2007) an. In B3 steht der dazugehörige Text. Dies wird dann auch in die Bodyfile.txt geschrieben.

Aber: In A4 steht das gleiche Datum mit einem anderen Text (in B4). Dieser Text aus B4 wird nicht mehr in die Bodyfile.txt geschrieben.
Ich hab den Text aus B4 in C3 kopiert in der Hoffnung das die Bemerkung dann in die Textdatei geschrieben wird. Dem war aber nicht so.

Was kann man den da noch machen?

2)
Nachdem jetzt Dank Deiner Hilfe (fast) alles klappt, ist mir noch was eingefallen. Ist es möglich, die Bemerkung für morgen (heutiges Datum +1) auch mitanzeigen zu lassen?


Viele Grüße,
MGA
Bitte warten ..
Mitglied: bastla
26.05.2007 um 18:01 Uhr
Hallo MGA!

Was kann man den da noch machen?
... vielleicht beim nächsten Mal die gewünschte Lösung gleich etwas genauer beschreiben ...

Aber ist ja nun kein Beinbruch - versuch' es mit diesen Versionen:
01.
Const ExcelDatei = "D:\Tageskommentar.xls" 
02.
If WScript.Arguments.Count < 1 Then WScript.Quit(1) 
03.
Dat = WScript.Arguments(0) 
04.
If Not IsDate (Dat) Then WScript.Quit(1) 
05.
Datum = CDate(Dat) 
06.
Set XL = WScript.CreateObject("Excel.Application") 
07.
XL.Workbooks.Open ExcelDatei 
08.
i = 3 'Zeilennummer der ersten Datenzeile 
09.
With XL.Worksheets(1) 
10.
	Do While .Cells(i,1).Value <> "" 
11.
		If Int(.Cells(i,1).Value) = Datum Or Int(.Cells(i,1).Value) = Datum + 1 Then 
12.
			WScript.Echo .Cells(i,2).Value 
13.
		End If 
14.
		i = i + 1 
15.
	Loop 
16.
End With 
17.
XL.ActiveWorkbook.Saved = True 
18.
XL.Application.Quit
Ich gehe davon aus, dass jede Bemerkung in eine eigene Zeile geschrieben werden soll. Die Batch-Datei würde dann etwa so aussehen:
01.
@echo off & setlocal 
02.
set Bemerkung= 
03.
set "BodyFile=D:\BodyFile.txt" 
04.
del "%BodyFile%" 2>nul 
05.
 
06.
:: ab hier entsteht der Inhalt des neuen BodyFiles 
07.
echo Hallo!>>"%BodyFile%" 
08.
echo Noch eine Leerzeile, und dann geht's los mit den Infos>>"%BodyFile%" 
09.
echo.>>"%BodyFile%" 
10.
 
11.
for /f "delims=" %%i in ('cscript //nologo C:\Scripts\EintragZumDatum.vbs %date%') do set Bemerkung=neu & echo %%i>>"%BodyFile%" 
12.
if defined Bemerkung goto :Fertigstellen 
13.
 
14.
::Da war nix ... 
15.
echo Keine Daten zu versenden! 
16.
del "%BodyFile%" 
17.
goto :eof 
18.
 
19.
:Fertigstellen 
20.
::Der restliche Body: 
21.
echo.>>"%BodyFile%" 
22.
echo So, das war's für heute ...>>"%BodyFile%" 
23.
echo Grüße>>"%BodyFile%" 
24.
 
25.
:: und jetzt die "blat"-Kommandozeile 
26.
blat "%BodyFile%" -to me@home.de -server ...
Grüße
bastla
Bitte warten ..
Mitglied: 42020
26.05.2007 um 20:46 Uhr
Serves bastla!

Das funktioniert hervorragend!! Sorry dafür, dass Du Dir die Mühe hast zwei mal machen müssen! Mir ist das mit der Erinnerung für "Morgen" aber erst später gekommen.

Jetzt hab ich noch zwei kleine Fragen (des hätt mir auch schon zuvor einfallen können):

1. Zwischen dem Text von heute und dem für Morgen möchte ich noch ne Leerzeile und vielleicht noch nen kleinen Satz dazu.

2. Kannst Du mir irgendwelche Pages oder Nachschlagewerke empfehlen, die das Thema VBS behandeln? Ich find Deine Lösung nämlich echt GENIAL!!

Gruß,
MGA
Bitte warten ..
Mitglied: bastla
26.05.2007, aktualisiert 18.10.2012
Hallo MGA!

Folgende Änderung: Beim Aufruf des VB-Scripts wird das "Basisdatum" (im Normalfall also das heutige Datum mit %date%) und, bei Bedarf, eine Differenz in Tagen übergeben. Damit erspare ich uns die Berechnung des Datums (für morgen) über Batch oder ein weiteres VB-Script, was, wie ich meine, das zusätzliche "Plus" im Script-Dateinamen rechtfertigt ...
01.
'EintragZumDatumPlus.vbs 
02.
'Argumente: Gesuchtes Datum [, Offset in Tagen] 
03.
Const ExcelDatei = "D:\Tageskommentar.xls" 
04.
If WScript.Arguments.Count < 1 Then WScript.Quit(1) 
05.
Dat = WScript.Arguments(0) 
06.
If Not IsDate (Dat) Then WScript.Quit(1) 
07.
Offset = 0 
08.
If WScript.Arguments.Count > 1 Then 
09.
	If IsNumeric(WScript.Arguments(1)) Then Offset = WScript.Arguments(1) 
10.
End If 
11.
Datum = CDate(Dat) + Offset 
12.
Set XL = WScript.CreateObject("Excel.Application") 
13.
XL.Workbooks.Open ExcelDatei 
14.
i = 3 'Zeilennummer der ersten Datenzeile 
15.
With XL.Worksheets(1) 
16.
    Do While .Cells(i,1).Value <> "" 
17.
        If Int(.Cells(i,1).Value) = Datum Then 
18.
            WScript.Echo .Cells(i,2).Value 
19.
        End If 
20.
        i = i + 1 
21.
    Loop 
22.
End With 
23.
XL.ActiveWorkbook.Saved = True 
24.
XL.Application.Quit
In der Batchdatei kannst Du jetzt die beiden Tage getrennt abrufen:
01.
@echo off & setlocal 
02.
set Bemerkung= 
03.
set "BodyFile=D:\BodyFile.txt" 
04.
del "%BodyFile%" 2>nul 
05.
 
06.
:: Ab hier entsteht der Inhalt des neuen BodyFiles: 
07.
echo Hallo!>>"%BodyFile%" 
08.
echo Noch eine Leerzeile, und dann geht's los mit den Infos für heute>>"%BodyFile%" 
09.
echo.>>"%BodyFile%" 
10.
 
11.
:: Bemerkungen für heute holen (Angabe einer Tagedifferenz von 0 kann unterbleiben) 
12.
for /f "delims=" %%i in ('cscript //nologo C:\Scripts\EintragZumDatumPlus.vbs %date%') do set Bemerkung=neu & echo %%i>>"%BodyFile%" 
13.
 
14.
:: Jetzt für morgen: zuerst Leerzeile und Einleitung 
15.
echo.>>"%BodyFile%" 
16.
echo Und morgen dann:>>"%BodyFile%" 
17.
 
18.
:: Bemerkungen für "Heute + 1 Tag" holen 
19.
for /f "delims=" %%i in ('cscript //nologo C:\Scripts\EintragZumDatumPlus.vbs %date% +1') do set Bemerkung=neu & echo %%i>>"%BodyFile%" 
20.
 
21.
if defined Bemerkung goto :Fertigstellen 
22.
 
23.
::Da war nix ... 
24.
echo Keine Daten zu versenden! 
25.
del "%BodyFile%" 
26.
goto :eof 
27.
 
28.
:Fertigstellen 
29.
::Der restliche Body: 
30.
echo.>>"%BodyFile%" 
31.
echo So, das war's ...>>"%BodyFile%" 
32.
echo Grüße>>"%BodyFile%" 
33.
 
34.
:: und jetzt die "blat"-Kommandozeile 
35.
blat "%BodyFile%" -to me@home.de -server ...
Kannst Du mir irgendwelche Pages oder Nachschlagewerke empfehlen, die das Thema VBS behandeln?
Schau einmal zum Ende dieses Threads ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
29.05.2007 um 07:24 Uhr
Moin MGA, moin bastla,

ich denke, dieser Beitrag strebt nun unaufhaltsam dem Status "Gelöst" entgegen, so daß hier wenig Restarbeiten zu erwarten sind. Eigentlich nur das Grünen-Haken-Setzen. *g

Meine Bitte an Dich, bastla:
Könntest Du bitte den einen oder anderen der Links, auf die Du eben verwiesen hast, mal in einer ruhigen Minute als "Empfohlene Links" dauerhaft hinterlegen?
Aus meiner Sicht im Bereich "Batch & Shell", wo sich ja das Meiste an Skript-Lösungen angesammelt hat.
Oder in einem neuen Bereich "VBS/WMI/WSH-Skripting", wenn Du den Mod spielst

Angenehmen Wochenbeginn
Biber
Bitte warten ..
Mitglied: 42020
30.05.2007 um 23:34 Uhr
Hi bastla,

es klappt jetzt alles super!!
Vielen Dank für Deine Hilfe!

Grüßle

MGA
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
Aufgabenplaner - E-Mail Benachrichtigung mittels blat.exe (7)

Frage von staybb zum Thema Windows Server ...

E-Mail
gelöst BLAT zum Mail versenden. Fehler für mich nicht lösbar (25)

Frage von 130217 zum Thema E-Mail ...

Erkennung und -Abwehr
Google Mail: Whitelisting bekannter Email-Addressen einer Domain (2)

Frage von MephMan zum Thema Erkennung und -Abwehr ...

Windows Server
Server 2012 R2 Cleanmgr.exe mit Systemdateien bereinigen? Wie? (2)

Frage von busteron zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...