Jump to content

Native Windows Shell: kein errorlevel nach setlocal?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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ß

Link zu diesem Kommentar

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?

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...