0

私はバッチ スクリプトを初めて使用し、環境変数を設定するバッチ スクリプトを作成しています。以下は、私が使用するバッチスクリプトです。

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

nameしかし、変数が設定されておらず、name1常にendlocal & SET name=%name1%nullであるか、以前に設定された環境変数から取得するという問題に直面しています。しかし、動作しない同じコードif statement

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

上記のコードでは、name1変数が設定され、name表示されています。この問題を取り除くために誰かが私を助けることができますか. endlocal / setif ステートメントで動作が異なるのはなぜですか?

4

1 に答える 1

3

IFステートメントが解析されると、それはIFスルーからその閉じ括弧までであり、すべて%var%は、行が解析された時点、つまり実行前の変数の内容に置き換えられます。

于 2013-03-19T12:47:06.283 に答える