2013-03-19 96 views
0

我是批处理脚本的新手,我正在编写批处理脚本来设置环境变量。下面是我用它的批处理脚本。如果语句不工作,批处理脚本ENDLOCAL/SET

if 1 == 1 (
    setlocal enableextensions enabledelayedexpansion 
    SET name1=%1_hello 
    endlocal & SET name=%name1% 
    echo varaiable %name% 
    goto :eof 
) 

但我面对的变量name是没有得到设置问题,并在endlocal & SET name=%name1%name1始终为空或以前设置环境变量得到它。 但是没有if statement的相同代码的作品。

setlocal enableextensions enabledelayedexpansion 
    SET name1=%1_hello 
    endlocal & SET name=%name1% 
    echo varaiable %name% 
    goto :eof 

在上面的代码中name1变量得到设定和name是越来越显示。有人能帮我摆脱这个问题吗?为什么endlocal/set与if语句的行为不同?

回答

3

当IF语句被解析 - 那是从IF到它的右括号,所有的%var%被这些变量的内容所取代,就像这些变量在执行PARSED时那样。

+0

因此,使用条件GOTO跳过代码块,而不是条件()块 – 2013-03-19 12:59:28