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, 814 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: Minuszeichen in set-Befehl (3)

Frage von Schottenrock zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(6)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Linux
gelöst Google Chrome startet nicht (12)

Frage von Thomas91 zum Thema Linux ...