Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Rückmeldung ob meine Batchdatei ausgeführt wurde.

RainerBa / 13 Antworten / Baumansicht Nickles

Gibt es eine Möglichkeit, Eine Rückmeldung zu bekommen ob eine Batchdatei korrekt oder fehlerhaft ausgeführt wurde?

z.B.: net send ?????

noch besser wäre eine Meldung über e_mail

Gruß
Rainer

bei Antwort benachrichtigen
REPI RainerBa „Rückmeldung ob meine Batchdatei ausgeführt wurde.“
Optionen

Unter W2k und NT (sicher auch XP) gibt es ein Programm sendmail.exe, welches man in cmd und vb Scripte einbinden kann, wo dann eine oder mehrere Mail(s) verschickt werden !
Funktioniert wohl aber nur falls ein Exchange Server verwendet wird !

Bei Bedarf kann ich Dir das Progrämmchen zu mailen !



repi



Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen
RainerBa REPI „Unter W2k und NT sicher auch XP gibt es ein Programm sendmail.exe, welches man...“
Optionen

Kannst du mir auch ein Beispiel senden
Gruß Rainer

Exchange5.5 ist im einsatz.

Es ist kein Windowsprogramm was ich starte,
sonder eine MS-DOS Anwendung
1x die Woche
Es wird ein ganz normaler copy befehl ausgeführt. Der vorher ein paar dienste stoppt und nach dem kopieren wieder startet.
Die Dienste muß ich stoppen, da sonst einige Dateien offen sind und diese mit dem copy-befehl nicht kopieren kann.
Kannst du mir ein Beispiel über ErrorLevel geben?

Gruß
Rainer


bei Antwort benachrichtigen
T-Rex RainerBa „Rückmeldung ob meine Batchdatei ausgeführt wurde.“
Optionen

Für VB (und VBA) zwei Links für Dich:



Bitte Hinweise beachten.


Der Tip ist neben vielen anderen hier zu finden:



Das ist aber nicht ganz die Antwort auf Deine Frage.

Normalerweise gibt jedes Programm einen Fehlercode zurück.
Die Variable (die Du in Batch-Dateien benutzen kannst) dafür heißt ErrorLevel.

Diesen ErrorLevel mußt Du nur abfragen, dann weißt Du, ob ein Fehler aufgetreten ist (ErrorLevel = 0 heißt kein Fehler).


 GrüßeT-Rex 
bei Antwort benachrichtigen
RainerBa T-Rex „Für VB und VBA zwei Links für Dich: Net Send per API Bitte Hinweise beachten....“
Optionen

Es ist kein Windowsprogramm was ich starte,
sonder eine MS-DOS Anwendung
1x die Woche
Es wird ein ganz normaler copy befehl ausgeführt. Der vorher ein paar dienste stoppt und nach dem kopieren wieder startet.
Die Dienste muß ich stoppen, da sonst einige Dateien offen sind und diese mit dem copy-befehl nicht kopieren kann.
Kannst du mir ein Beispiel über ErrorLevel geben?

Gruß
Rainer

bei Antwort benachrichtigen
T-Rex RainerBa „Es ist kein Windowsprogramm was ich starte, sonder eine MS-DOS Anwendung 1x die...“
Optionen

Lang, lang ist es her.

Ich glaube, so ging es (keine Gewähr auf Richtigkeit):



Ich meine mich erinnern zu können, daß die If-Abfrage rückwärts ablaufen muß (also größter Wert zuerst), kann ich jetzt aber mit einem anderen Befehl verwechseln.

Vielleicht googlest Du mal nach Batch-Programmierung, mein Batch-Wissen ist jetzt schon etwas angestaubt.
 GrüßeT-Rex 
bei Antwort benachrichtigen
REPI T-Rex „Lang, lang ist es her. Ich glaube, so ging es keine Gewähr auf Richtigkeit :...“
Optionen

@echo off
DeinBefehl
If "%%ERRORLEVEL"=="2" GOTO Fehler2
If "%%ERRORLEVEL"=="1" GOTO Fehler1

:KeinFehler
echo Befehl fehlerfrei ausgeführt
GOTO Weiter
:Fehler 1
echo Fehler aufgetreten
GOTO Weiter
:Fehler 2
echo Fehler aufgetreten


:Weiter
echo Hier gehts weiter



Sollte es nicht so aussehen, sonst werden ja doch alle Fehlermeldungen angesprungen werden, auch wenn kein Fehler war ??


Gruß


repi


Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen
T-Rex REPI „@echo off DeinBefehl If ERRORLEVEL 2 GOTO Fehler2 If ERRORLEVEL 1 GOTO Fehler1...“
Optionen

Danke, habe ich vergessen zu schreiben.

 GrüßeT-Rex 
bei Antwort benachrichtigen
RainerBa REPI „@echo off DeinBefehl If ERRORLEVEL 2 GOTO Fehler2 If ERRORLEVEL 1 GOTO Fehler1...“
Optionen

@echo off
:start
xcopy c:\test\*.* /s /e c:\test1\
If "%%ERRORLEVEL"=="2" GOTO Fehler2
If "%%ERRORLEVEL"=="1" GOTO Fehler1
:KeinFehler
echo Befehl fehlerfrei ausgeführt
GOTO Weiter
:Fehler1
echo Fehler aufgetreten
pause
GOTO start
:Fehler2
echo Fehler aufgetreten
pause
GOTO start
:Weiter
echo hurra
Pause

Irgenwie haut das nicht hin.
wenn ich Strg-C drücke läuft das Programm weiter.
Hast du eine Idee wo der Fehler liegen könnte?
Gruß Rainer

bei Antwort benachrichtigen
RainerBa REPI „@echo off DeinBefehl If ERRORLEVEL 2 GOTO Fehler2 If ERRORLEVEL 1 GOTO Fehler1...“
Optionen

@echo off
:start
xcopy c:\test\*.* /s /e c:\test1\
If "%%ERRORLEVEL"=="2" GOTO Fehler2
If "%%ERRORLEVEL"=="1" GOTO Fehler1
:KeinFehler
echo Befehl fehlerfrei ausgeführt
GOTO Weiter
:Fehler1
echo Fehler aufgetreten
pause
GOTO start
:Fehler2
echo Fehler aufgetreten
pause
GOTO start
:Weiter
echo hurra
Pause

Irgenwie haut das nicht hin.
wenn ich Strg-C drücke läuft das Programm weiter.
Hast du eine Idee wo der Fehler liegen könnte?
Gruß Rainer

bei Antwort benachrichtigen
T-Rex RainerBa „@echo off :start xcopy c: test . /s /e c: test1 If ERRORLEVEL 2 GOTO Fehler2 If...“
Optionen

Hallo Rainer,

folgendes Script:



Und dann habe ich noch ein paar Anmerkungen:
bei xcopy benutzt Du "/s /e". "/e" schließt "/s" ein.
"/s" kopiert Unterverzeichnisse, die nicht leer sin
"/e" kopiert Unterverzeichnisse, ob leer oder nicht leer, ist egal

Mein Fehler lag in der Syntax von ErrorLevel.


Gruß
T-Rex
 GrüßeT-Rex 
bei Antwort benachrichtigen
RainerBa T-Rex „Hallo Rainer, folgendes Script: Und dann habe ich noch ein paar Anmerkungen: bei...“
Optionen

Danke, aber klappt nicht ganz.

Beim ersten Kopiervorgang hat auch alles geklappt, aber dann.
1. Kommt die Abfrage beim überschreiben (Sollte generell auf alle)
2. er schreibt mir zugriff verweigert. kann aber nicht sein, da ich
diese Verzeichnis löschen, umbenennen und anlegen kann und bekomme
die meldung fehlerfrei ausgeführt.
3. Bekomme keine Fehlermeldung wenn ich STRG-C drücke.

Irgenwo muß noch ein kleiner bock sein.

Hast du noch eine Idee
Gruß Rainer

\test2\12345.bat überschreiben (Ja/Nein/Alle)? a
Zugriff verweigert

Befehl fehlerfrei ausgefuehrt
Das wars!

Drücken Sie eine beliebige Taste . . .

bei Antwort benachrichtigen
mike_ao RainerBa „Danke, aber klappt nicht ganz. Beim ersten Kopiervorgang hat auch alles...“
Optionen

wenn du die datei ..\irgendwoher\filename.ext nach ...\irgendwohin\filename.ext kopieren wills, aber die datei irgendwohin existiert schon/noch, dann solltest du vorher die date umbenennen/löschen

if not exist C:\ziel\filename.ext del c:\ziel\filename.ext

:Copy
rem hier wird nun kopiert....

willst du ggf die alten daten (letzen 3 versionen) aufheben, dann mach sowas

if exist ...\ziel\fn.003 del ...\ziel\fn.003
if exist ...\ziel\fn.002 ren ...\ziel\fn.002 ...\ziel\fn.003
if exist ...\ziel\fn.001 ren ...\ziel\fn.001 ...\ziel\fn.002
if exist ...\ziel\fn.org ren ...\ziel\fn.org ...\ziel\fn.001

xcopy.......

fool me once, shame on you.... fool me twice, shame on me!
bei Antwort benachrichtigen
Kolti RainerBa „Rückmeldung ob meine Batchdatei ausgeführt wurde.“
Optionen

Bevor Du kopierst, setzte den Befehl "verify on" ein. Der verifizert die kopierten Daten. Besser auch den Befehl XCOPY, anstatt COPY nehmen.
Errorlevel für XCOPY:
0 = Dateien wurden fehlerfrei kopiert
1 = Es wurden keine zu kopierenden DAteien gefunden
2 = Der Benutzer hat Xcopy durch Drücken von Strg+C abgebrochen
4 = Initialisierungsfehler: Arbeitsspeicher oder Datenträger nicht genug Platz oder ungültiges Verzeichnis oder Syntaxfehler
5 = Schreibfehler aufgetreten
Diese Fehler kann man mit IF abfragen.

bei Antwort benachrichtigen