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, 801 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...