Batch: Prüfung auf erfolgreich ausgeführten Befehl
Guten Morgen zusammen!
Habe folgedes Problem.. es existiert ein Skript, welches einen Ordner auf Dateien mit Größe 0 Byte prüft, ein Log erstellt und dann eine Mail verschickt.
Das klappt soweit auch ganz gut.
Es sollen auch noch die Dateien, die größer als 0 Byte sind an eine Mail angehängt und versendet werden. Auch das klappt.
Mein Problem besteht darin, dass er immer - also egal ob eine Datei mit 0 Byte gefunden wurde oder nicht - eine Mail verschickt, das einer 0 Byte Datei existieren würden.
Wie bekomme ich es hin, dass die Mail für 0 Byte Dateien nur dann verschickt wird, wenn auch wirklich eine gefunden wurde?
Eine IF Abfrage ob das Log existiert wäre eine theoretische Möglichkeit - habe es in der Praxis aber nicht umgesetzt bekommen.
Kann mir jemand helfen?
Gruß,
mylurid
Habe folgedes Problem.. es existiert ein Skript, welches einen Ordner auf Dateien mit Größe 0 Byte prüft, ein Log erstellt und dann eine Mail verschickt.
Das klappt soweit auch ganz gut.
Es sollen auch noch die Dateien, die größer als 0 Byte sind an eine Mail angehängt und versendet werden. Auch das klappt.
Mein Problem besteht darin, dass er immer - also egal ob eine Datei mit 0 Byte gefunden wurde oder nicht - eine Mail verschickt, das einer 0 Byte Datei existieren würden.
ECHO off
chcp 28591
Set "Verzeichnis=D:\xy\z\"
@for /R %Verzeichnis% %%i in (*.*) do @if %%~zi==0 if /i %%~dpi==%Verzeichnis% echo %date% %time:~0,8% - del "%%i" >> delete.txt
@for /R %Verzeichnis% %%i in (*.*) do @if %%~zi==0 if /i %%~dpi==%Verzeichnis% del "%%i" && GOTO BLAT-AUFRUF2
if exist "%Verzeichnis%" dir /b /A:-d "%Verzeichnis%">nul 2>nul || GOTO ENDE
if exist "%Verzeichnis%" dir /b /A:-d "%Verzeichnis%">nul 2>nul && GOTO BLAT-Aufruf
:BLAT-AUFRUF
blat blat -to xx@yy.intern
:BLAT-AUFRUF2
blat -to xx@yy.intern
:ENDE
Wie bekomme ich es hin, dass die Mail für 0 Byte Dateien nur dann verschickt wird, wenn auch wirklich eine gefunden wurde?
Eine IF Abfrage ob das Log existiert wäre eine theoretische Möglichkeit - habe es in der Praxis aber nicht umgesetzt bekommen.
Kann mir jemand helfen?
Gruß,
mylurid
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 253401
Url: https://administrator.de/contentid/253401
Ausgedruckt am: 05.11.2024 um 21:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo mylurid!
Wenn tatsächlich 2 verschiedene Mails gesendet werden sollen, würde ich das schematisch (und ungetestet) etwa so versuchen:
Anstelle der
Grüße
bastla
Wenn tatsächlich 2 verschiedene Mails gesendet werden sollen, würde ich das schematisch (und ungetestet) etwa so versuchen:
ECHO off & setlocal
chcp 28591
Set "Verzeichnis=D:\xy\z\"
Set "Log_Delete=%temp%\delete.txt"
Set "Log_Files=%temp%\files.txt"
del "%Log_Delete%" 2>nul
del "%Log_Files%" 2>nul
pushd "%Verzeichnis%" || goto :eof
@for /F "delims=" %%i in ('dir /b/a-d 2^>nul') do @if %%~zi==0 @(
echo %date% %time:~0,8% - del "%%i">>"%Log_Delete%"
del "%%i"
)
dir /b/a-d>"%Log_Files%" 2>nul
if exist "%Log_Files%" echo Sende Mail mit Dateien grosser als 0 Byte
if exist "%Log_Delete%" echo Sende Mail mit geloeschten Dateien
popd
echo
in den letzen beiden Zeilen dann natürlich der entsprechende "blat"-Aufruf (mit den Attachments %Log_Files% bzw %Log_Delete%") ...Grüße
bastla