Einige Batch-Dateien unter Windows eine IF-Syntax mit mehreren Linien verwenden, wie unten:Batch-Dateien, Vista x64, wenn und Klammern
if var==rule (
some comands
) else (
else commands
)
Nun, Windows Vista x64 beschlossen, alle 32-Bit-Dateien unter „C zu setzen : \ Programme (x86) ". Wenn Sie eine Umgebungsvariable (z. B. PATH) in einer IF ohne Anführungszeichen verwenden, verwirren die Klammern im Wert der Variablen IF, wodurch die Batchdatei abgebrochen wird. Zum Beispiel:
if "%OS%"=="Windows_NT" (
@setlocal
call :set_home
set _ARGS=%*
) else (
set _SCALA_HOME=%SCALA_HOME%
rem The following line tests SCALA_HOME instead of _SCALA_HOME, because
rem the above change to _SCALA_HOME is not visible within this block.
if "%SCALA_HOME%"=="" goto error1
call :set_args
)
Eine Batch-Datei mit diesem wird auch wenn die Linie nicht, wo% SCALA_HOME% erscheint erhält nicht ausgeführt. Das ist eher ärgerlich. Gibt es dafür eine Lösung?
Wenn die verzögerte Erweiterung dieses Problem tatsächlich löst, brauchen Sie kein zweites Batch-Skript, sondern legen Sie 'setlocal enableextensions enabledelayedexpansion' ganz oben in Ihr Skript. –
Ich wusste das nicht, danke Patrick! Viel schöner. –
Ich werde versuchen, setlocal enableextensions aktivierendelayedexpasion verwenden. Wenn es funktioniert, brauche ich eine andere Antwort als akzeptiert. –