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

Batch: Prüfung auf erfolgreich ausgeführten Befehl

Frage Entwicklung Batch & Shell

Mitglied: mylurid

mylurid (Level 1) - Jetzt verbinden

30.10.2014 um 08:33 Uhr, 820 Aufrufe, 2 Kommentare

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.

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
Mitglied: bastla
30.10.2014 um 16:12 Uhr
Hallo mylurid!

Wenn tatsächlich 2 verschiedene Mails gesendet werden sollen, würde ich das schematisch (und ungetestet) etwa so versuchen:
01.
ECHO off & setlocal 
02.
 
03.
chcp 28591  
04.
 
05.
Set "Verzeichnis=D:\xy\z\" 
06.
Set "Log_Delete=%temp%\delete.txt" 
07.
Set "Log_Files=%temp%\files.txt" 
08.
 
09.
del "%Log_Delete%" 2>nul 
10.
del "%Log_Files%" 2>nul 
11.
 
12.
pushd "%Verzeichnis%" || goto :eof 
13.
 
14.
@for /F "delims=" %%i in ('dir /b/a-d 2^>nul') do @if %%~zi==0 @( 
15.
    echo %date% %time:~0,8% - del "%%i">>"%Log_Delete%" 
16.
    del "%%i" 
17.
18.
 
19.
dir /b/a-d>"%Log_Files%" 2>nul 
20.
 
21.
if exist "%Log_Files%" echo Sende Mail mit Dateien grosser als 0 Byte  
22.
if exist "%Log_Delete%" echo Sende Mail mit geloeschten Dateien 
23.
 
24.
popd
Anstelle der echo in den letzen beiden Zeilen dann natürlich der entsprechende "blat"-Aufruf (mit den Attachments %Log_Files% bzw %Log_Delete%") ...

Grüße
bastla
Bitte warten ..
Mitglied: mylurid
03.11.2014 um 17:22 Uhr
Ich hatte es bereits selbst gelöst..
Mein Problem war (habe nicht all zu oft mit Batches zu tun), dass ich nicht daran gedacht habe, dass alles sequenziell durchlaufen wird.
Daher ist er nach dem GOTO Befehl trotzdem nochmal zum Versand der Failure Mail gesprungen.

Hatte im Kopf, dass sich die Sprungmarken wir Funktionen handhaben und nur bei Bedarf angesprochen werden..

Gruß,
mylurid
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst BATCH Zieldatei nach Shell-Befehl leer? (7)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Mehrzeiligen Powershell-Befehl mit Batch ausführen (3)

Frage von 133202 zum Thema Batch & Shell ...

Windows Netzwerk
gelöst Copy Befehl in einer batch funktioniert nicht. (3)

Frage von Pauli-H zum Thema Windows Netzwerk ...

Windows 10
gelöst Fenster Mini- Maximieren per Batch-Befehl (2)

Frage von knitti zum Thema Windows 10 ...

Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(3)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(10)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (11)

Frage von keine-ahnung zum Thema Exchange Server ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (10)

Frage von ahaeuser zum Thema Windows Server ...

Datenbanken
gelöst MySQL Zeiterfassungs-Problematik (wer ist eingecheckt) (9)

Frage von NativeMode zum Thema Datenbanken ...