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
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
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
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
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).
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
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.
@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
Danke, habe ich vergessen zu schreiben.
@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
@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
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
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 . . .
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.......
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.