在Windows上的一些批處理文件使用IF語法與多條線路,如下圖所示:批處理文件,Vista 64位,如果和括號
if var==rule (
some comands
) else (
else commands
)
現在的Windows Vista 64位決定把所有32個文件「C下:\ Program Files(x86)「。不幸的是,無論何時在沒有引號的多行IF中使用環境變量(如PATH),變量值中的括號都會混淆IF,從而中止批處理文件。例如:
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
)
與此批處理文件將失敗即使其中%SCALA_HOME出現%沒有得到執行行。這很煩人。有沒有解決方案?
如果延遲擴展確實解決了這個問題,那麼您不需要第二批腳本,只需在腳本的頂部放置`setlocal enableextensions enabledelayedexpansion`即可。 – 2009-01-10 11:54:28