amzd 10 Geschrieben 28. Januar 2010 Melden Teilen Geschrieben 28. Januar 2010 Hallo, seit langem arbeite ich mit Windows native Shell Scripts. Jetzt habe ich ein Script, in dem ich die Umgebung neu setze mit setlocal Leider führt das dazu, dass der errorlevel konstant auf 0 oder 1 gesetzt wird (je nach übergebenen Parametern) und dann bei neuen Befehlen der errorlevel nicht mehr gemäß dem Ausführungserfolg der neuen Befehle neu gesetzt wird. Ich muss den Schreibzugriff auf ein Verzeichnis prüfen, bevor ich dort etwas hin schreibe und möchte, dass das Skript über normale Routinen sanft aussteigt, wenn kein Zugriff besteht. Ein Umweg wäre: erst versuchen hin zu schreiben und danach mit if exists abzuprüfen: Aber das ist mir zu unsauber. Lieber wäre mir eine Prüfung mit errorlevel. Der Einfachheit halber kann man das mit einem CD-LW testen. Ob eine CD/DVD drin liegt kann man mit if exists prüfen. Sobald eine drin liegt, bekommt man u.U errorlevel 9009. Leider bekommt man den nur beim ersten mal Abprüfen. Zwar sagt er ab dem 2. Mal immer noch "Access denied", aber er setzt keinen errorlevel mehr. Das hier funktioniert auch nicht: for /F "delims=xxx" %%i in ('echo Test the Log ^>%Log%') DO set amTestLogEcho=%%i Wobei hier die Idee war, die Worte einzufangen (Access denied). Das geht nicht, weil der Befehl in den runden Klammern nicht ausgeführt wird, sondern "Access denied" bringt. Das mit setlocal und dem errorlevel ist alles total buggy, wie mir scheint. Kann nicht ein Microsoft MVP eine Behebung in die Gänge bringen…? Oder weiß einer Rat? Bitte keine Tipps, ich möchte gefälligst umsteigen auf …, : nimm Perl // mache ich nicht, nur Bordmittel sind hier erlaubt nimm Powershell // will ich auch nicht, da es erst extra installiert werden muss. Eigentlich möchte ich, dass die Bugs behoben werden. Danke und Gruß Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 28. Januar 2010 Melden Teilen Geschrieben 28. Januar 2010 Nur die Tatsache das es dir so scheint oder das du das lieber gerne so oder anders hättest, macht daraus nicht zwangsläufig einen Bug. Wenn du der Meinung bist, das es sich hier um einen Bug handelt, dann wende dich damit an MS. Wenn MS deine Meinung teilt, wird es einen Fix dafür geben, wenn es kein Bug ist, wird es eben keinen Fix geben. Was sollen unsere MVPs da löten? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 28. Januar 2010 Melden Teilen Geschrieben 28. Januar 2010 Wäre geschickt, wenn Du den Teil des Scriptes, der Deiner Meinung nach buggy mit dem errorlevel umgeht, posten könntest. Hast Du bei "setlocal" auch "EnableDelayedExpansion" mit dran? Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 28. Januar 2010 Melden Teilen Geschrieben 28. Januar 2010 Und beachten: "Errorlevel" wird normalerweise zurückgesetzt, wenn er 1x abgefragt wurde. Dass könnte auch ein Fehler im Script sein. Also wenn man mit dem Errorlevel weiterarbeiten möchte, den Wert in eine Variable kopieren. -Zahni 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.