Komisch Geltungsbereich Problem .bat-Datei

Schreibe ich eine einfache .bat-Datei, und ich habe in einige seltsame Verhalten. Es gibt ein paar Orte, wo ich zu tun haben, eine einfache if/else, aber der code innerhalb des blocks scheinen nicht ordnungsgemäß.

Hier ist ein einfacher Fall, der zeigt den Fehler:

@echo off

set MODE=FOOBAR

if "%~1"=="" (
  set MODE=all
  echo mode: %MODE%
) else (
  set MODE=%~1
  echo mode: %MODE%
)
echo mode: %MODE%

Die Ausgabe, die ich bekommen hab ist:

C:\>test.bat test
mode: FOOBAR
mode: test

Warum ist das echo innerhalb der code-block nicht immer der neue Wert der variable? In den eigentlichen code, den ich Schreibe, dass ich brauchen, um zu bauen ein paar Variablen und referenzieren Sie im Rahmen der if/else. Ich konnte diesen Schalter zu verwenden, labels und gotos statt einer if/else, aber das scheint nicht annähernd so sauber.

Was dieses Verhalten verursacht? Gibt es irgendeine Art von Grenze auf Variablen innerhalb von Codeblöcken?

InformationsquelleAutor Herms | 2008-11-20
Schreibe einen Kommentar