
42020
25.05.2007, aktualisiert am 18.10.2012
E-Mail mit Blat.exe
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!
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!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 59858
Url: https://administrator.de/forum/e-mail-mit-blat-exe-59858.html
Ausgedruckt am: 11.04.2025 um 18:04 Uhr
11 Kommentare
Neuester Kommentar
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........
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........
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":
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:
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
kommentarlos die Batchdatei beenden.
Grüße
bastla
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":
Const ExcelDatei = "D:\Tageskommentar.xls"
If WScript.Arguments.Count < 1 Then WScript.Quit(1)
Dat = WScript.Arguments(0)
If Not IsDate (Dat) Then WScript.Quit(1)
Datum = CDate(Dat)
Set XL = WScript.CreateObject("Excel.Application")
XL.Workbooks.Open ExcelDatei
i = 3 'Zeilennummer der ersten Datenzeile
With XL.Worksheets(1)
Do While .Cells(i,1).Value <> ""
If .Cells(i,1).Value = Datum Then
WScript.Echo .Cells(i,2).Value
Exit Do
End If
i = i + 1
Loop
End With
XL.ActiveWorkbook.Saved = True
XL.Application.Quit
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:
@echo off & setlocal
set Bemerkung=
for /f "delims=" %%i in ('cscript //nologo C:\Scripts\EintragZumDatum.vbs %date%') do set "Bemerkung=%%i"
if not defined Bemerkung echo Kein Eintrag gefunden ... & goto :eof
echo blat mit Message %Bemerkung% starten ...
Die beiden "echo"-Befehle dienen natürlich nur zu Demonstrationszwecken, die vorletzte Zeile könnte also zB auch mit
if not defined Bemerkung goto :eof
Grüße
bastla
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
ä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
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
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
echo %Bemerkung%>"D:\Bodyfile.txt"
echo Das war's für heute.>>"D:\Bodyfile.txt"
Vielleicht beschreibst Du aber erst einmal die bisher von Dir vewendete Vorgangsweise etwas genauer.
Grüße
bastla
Hallo MGA!

Aber ist ja nun kein Beinbruch - versuch' es mit diesen Versionen:
Ich gehe davon aus, dass jede Bemerkung in eine eigene Zeile geschrieben werden soll. Die Batch-Datei würde dann etwa so aussehen:
Grüße
bastla
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:
Const ExcelDatei = "D:\Tageskommentar.xls"
If WScript.Arguments.Count < 1 Then WScript.Quit(1)
Dat = WScript.Arguments(0)
If Not IsDate (Dat) Then WScript.Quit(1)
Datum = CDate(Dat)
Set XL = WScript.CreateObject("Excel.Application")
XL.Workbooks.Open ExcelDatei
i = 3 'Zeilennummer der ersten Datenzeile
With XL.Worksheets(1)
Do While .Cells(i,1).Value <> ""
If Int(.Cells(i,1).Value) = Datum Or Int(.Cells(i,1).Value) = Datum + 1 Then
WScript.Echo .Cells(i,2).Value
End If
i = i + 1
Loop
End With
XL.ActiveWorkbook.Saved = True
XL.Application.Quit
@echo off & setlocal
set Bemerkung=
set "BodyFile=D:\BodyFile.txt"
del "%BodyFile%" 2>nul
:: ab hier entsteht der Inhalt des neuen BodyFiles
echo Hallo!>>"%BodyFile%"
echo Noch eine Leerzeile, und dann geht's los mit den Infos>>"%BodyFile%"
echo.>>"%BodyFile%"
for /f "delims=" %%i in ('cscript //nologo C:\Scripts\EintragZumDatum.vbs %date%') do set Bemerkung=neu & echo %%i>>"%BodyFile%"
if defined Bemerkung goto :Fertigstellen
::Da war nix ...
echo Keine Daten zu versenden!
del "%BodyFile%"
goto :eof
:Fertigstellen
::Der restliche Body:
echo.>>"%BodyFile%"
echo So, das war's für heute ...>>"%BodyFile%"
echo Grüße>>"%BodyFile%"
:: und jetzt die "blat"-Kommandozeile
blat "%BodyFile%" -to me@home.de -server ...
Grüße
bastla
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 ...
In der Batchdatei kannst Du jetzt die beiden Tage getrennt abrufen:
Grüße
bastla
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"
'EintragZumDatumPlus.vbs
'Argumente: Gesuchtes Datum [, Offset in Tagen]
Const ExcelDatei = "D:\Tageskommentar.xls"
If WScript.Arguments.Count < 1 Then WScript.Quit(1)
Dat = WScript.Arguments(0)
If Not IsDate (Dat) Then WScript.Quit(1)
Offset = 0
If WScript.Arguments.Count > 1 Then
If IsNumeric(WScript.Arguments(1)) Then Offset = WScript.Arguments(1)
End If
Datum = CDate(Dat) + Offset
Set XL = WScript.CreateObject("Excel.Application")
XL.Workbooks.Open ExcelDatei
i = 3 'Zeilennummer der ersten Datenzeile
With XL.Worksheets(1)
Do While .Cells(i,1).Value <> ""
If Int(.Cells(i,1).Value) = Datum Then
WScript.Echo .Cells(i,2).Value
End If
i = i + 1
Loop
End With
XL.ActiveWorkbook.Saved = True
XL.Application.Quit
@echo off & setlocal
set Bemerkung=
set "BodyFile=D:\BodyFile.txt"
del "%BodyFile%" 2>nul
:: Ab hier entsteht der Inhalt des neuen BodyFiles:
echo Hallo!>>"%BodyFile%"
echo Noch eine Leerzeile, und dann geht's los mit den Infos für heute>>"%BodyFile%"
echo.>>"%BodyFile%"
:: Bemerkungen für heute holen (Angabe einer Tagedifferenz von 0 kann unterbleiben)
for /f "delims=" %%i in ('cscript //nologo C:\Scripts\EintragZumDatumPlus.vbs %date%') do set Bemerkung=neu & echo %%i>>"%BodyFile%"
:: Jetzt für morgen: zuerst Leerzeile und Einleitung
echo.>>"%BodyFile%"
echo Und morgen dann:>>"%BodyFile%"
:: Bemerkungen für "Heute + 1 Tag" holen
for /f "delims=" %%i in ('cscript //nologo C:\Scripts\EintragZumDatumPlus.vbs %date% +1') do set Bemerkung=neu & echo %%i>>"%BodyFile%"
if defined Bemerkung goto :Fertigstellen
::Da war nix ...
echo Keine Daten zu versenden!
del "%BodyFile%"
goto :eof
:Fertigstellen
::Der restliche Body:
echo.>>"%BodyFile%"
echo So, das war's ...>>"%BodyFile%"
echo Grüße>>"%BodyFile%"
:: und jetzt die "blat"-Kommandozeile
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
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
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