eras 10 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 Hi ihr, ich hab wieder mal Probleme mit einem geliebten Batchskript. Und zwar soll das skript ein Netzlaufwerk verbinden sofern noch nicht vorhanden und per robocopy files kopieren. Sieht vom Aufbau her so aus: setlocal enabledelayedexpansion net use | find <laufwerk> if %ERRORLEVEL%==1 ( <Verbinde Laufwerk> set returncode=!ERRORLEVEL! if not !RETURNCODE!==0 ( echo Fehler aufgetreten > logfile echo msgbox "Fehler" ^& Chr(13) ^& "zweite Zeile" > in den autostart exit 1 ) ELSE ( Files kopieren... ) ) ELSE ( Files kopieren... ) Nun verhält sich diese Mistsau so (sorry aber ich bin echt schon so sauer), dass alles perfekt funktionert wenn das laufwerk gefunden werden kann. Wenn es allderings nicht gefunden wird, wird es zwar noch erfolgreich verbunden, aber dann (und jetzt kommts) spring er trotzdem in if not !RETURNCODE!==0 ( rein. Und als ob das nicht schon falsch genug wäre: zusätzlich wird dabei nur der 'exit' Befehl ausgeführt und nicht die echo's die noch davon stehen? :confused::confused::confused::confused: Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 Moin, ich verstehe das Ganze zwar nicht vollständig, aber wenn die Variablen in deiner echten Datei auch mit ! statt mit % eingefasst sind, kann es nicht gehen ... oder überseh ich da was? Gruß, Nils Zitieren Link zu diesem Kommentar
eras 10 Geschrieben 15. Juli 2010 Autor Melden Teilen Geschrieben 15. Juli 2010 Deshalb das setlocal enabledelayedexpansion Warum, wieso, weshalb wurde hier schonmal angesprochen: http://www.mcseboard.de/windows-forum-scripting-71/errorlevel-rueckgabe-if-abfragen-167090.html Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 Moin, okay, aber warum so kompliziert? Was spricht gegen: if not exist <laufwerk>\. net use ... <verbinde Laufwerk> <Files kopieren...> ? Gruß, Nils Zitieren Link zu diesem Kommentar
eras 10 Geschrieben 15. Juli 2010 Autor Melden Teilen Geschrieben 15. Juli 2010 Ja und was ist wenn das Laufwerk verbinden aus irgendeinem Grund nicht funktioniert? Zitieren Link zu diesem Kommentar
jaksa 10 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 if not exist <laufwerk>\. net use ... <verbinde Laufwerk> if exist <laufwerk>\. <Files kopieren...> Zitieren Link zu diesem Kommentar
eras 10 Geschrieben 15. Juli 2010 Autor Melden Teilen Geschrieben 15. Juli 2010 Was nichts an meiner Frage ändert: Was ist wenn das Verbinden aus irgendeinem Grund nicht funktioniert? Das es einfacher auch geht ist mir schon klar, aber so wäre es auch unsauberer. Irgendeine Art von Fehlerprüfung brauche ich,... Ich muss wissen wenn das Verbinden nicht funktioniert hat. Zitieren Link zu diesem Kommentar
jaksa 10 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 Ich scheibe immer ein Log File wenn etwas schief geht. Zum Schluss sende ich mir entweder das Logfile odr die Zusammenfassung von Robocopy Log per Mail zu. Das Ganze mache ich aber per VBScript. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 Moin, vielleicht wäre es sinnvoll, wenn du mal deine genauen Anforderungen kundtust. Welches Ziel versuchst du mit deinem Batch zu erreichen? Bislang hast du nur "ich will aber" geäußert, aber so wird es schwierig, eine passende Lösung zu entwickeln. Gruß, Nils Zitieren Link zu diesem Kommentar
eras 10 Geschrieben 15. Juli 2010 Autor Melden Teilen Geschrieben 15. Juli 2010 Meine Anforderung? Ich brauche eine Lösung für das Problem, warum er in if not !RETURNCODE!==0 ( reinspringt und warum er dort nur den exit Befehl ausführt! ;) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 Hmmm... ich hab Dein Script mal ausprobiert. Bei mir tuts eigentlich das, was es soll... Allerdings... Du fängst ja damit nur den Fehler ab, dass das Laufwerk nicht verbunden werden könnte... ob korrekt kopiert wurde, fängst Du ja da noch nicht ab, oder? Zitieren Link zu diesem Kommentar
eras 10 Geschrieben 15. Juli 2010 Autor Melden Teilen Geschrieben 15. Juli 2010 @Cybquest Danke für die Info... Das es bei dir geht, hat mich jetzt Motiviert mich abermals damit zu spielen und jetzt weiß ich, dass diese Zeile dran Schuld ist: echo msgbox "Fehler" ^& Chr(13) ^& "zweite Zeile" > in den autostart Im "echten" Skript schaut die Zeile ein bisschen anders aus, aber was ich da machen möchte ist schnell beschrieben: Bei einem Fehler, möchte ich das ein .vbs Skript erstellt wird, welches einfach nur eine Messagebox enthalt die darauf hinweist, dass bei der Sicherung was schief gegangen ist. Der Code hierfür soll also einfach per 'echo' in ein File mit der Dateiendung .vbs geschrieben werden und die soll direkt in den Autostart Ordner eines bestimmten Userprofils landen. Ich weiß, etwas seltsame Methode der Benachrichtigung, aber Mail senden etc. steht mir nicht zur verfügung. << 30min später >> So hab's geschafft. Der Fehler war das: ^& Chr(13) ^& Irgendwie hat er das nicht genommen, trotz escapen. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 Moin, Meine Anforderung?Ich brauche eine Lösung für das Problem, warum er in if not !RETURNCODE!==0 ( reinspringt und warum er dort nur den exit Befehl ausführt! ;) das ist keine Anforderung. Auf der Basis reden wir nicht über eine Lösung für dein Problem (welches du ja nicht benennst), sondern über das Problem deiner Lösung. Gruß, Nils Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 15. Juli 2010 Melden Teilen Geschrieben 15. Juli 2010 ...So hab's geschafft. Der Fehler war das: ^& Chr(13) ^&Irgendwie hat er das nicht genommen, trotz escapen. ...die Zeile hab ich bei mir weg gelassen, das sie mir eh suspekt war ;) Allerdings: Wirklich sehr seltsame Methode der Benachtrichtigung... wäre ein "net send" oder "msg" nicht möglich? Zitieren Link zu diesem Kommentar
eras 10 Geschrieben 15. Juli 2010 Autor Melden Teilen Geschrieben 15. Juli 2010 @NilsK Mein Problem ist nicht, das ich keine Lösung habe bzw. hatte. Ich bin/war nicht auf der Suche nach einer Lösung für mein Problem, sondern auf der Suche nach einer Fehlerbeseitigung für meine Lösung. Ich versteh nicht warum du mir eine andere Lösung für mein Problem aufdrängen willst. Nicht das ich undankbar erscheinen will, aber das bringt doch nix... @Cybquest Net Send oder msg würde theoretisch auch gehen, aber das ist auch eher unzuverlässig. Bei einem fehlgeschlagenen Verbindungsversuch mit dem Netzlaufwerk aufgrund eines Netzwerkproblems, wäre Net Send oder msg nicht so eine gute Wahl. Ich denke das ich hier die beste Methode gewählt habe,... so wird halt der User der diesen PC benutzt darauf aufmerksam gemacht das etwas schief gegangen ist. Ich muss mich nur noch darauf verlassen, dass er mich dann auch anruft. ^^ Danke für die Hilfe! :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.