2016-08-22 5 views
2

私は(変数設定と同じ行でそれをエコー)は、Windows 10の64ビットに新しいですし、プロンプトコマンドを起動して、次のように入力します。同じ行のECHOコマンドでSETが保持されないのはなぜですか?

H:\>set a="hello" & echo %a% 
%a% 

H:\>set a="hello" & echo %a% 
"hello" 

は、なぜ私は「ハロー」私はエコー初めて表示されませんそれとも?

これが基本的な質問であれば、私は答えをオンラインで見つけられなかったようです。であるとして(a存在していなかったので、文字列"%a%"を)最初の実行%a%が渡されますので上の行は、setコマンドの前に評価されますので、

+0

最初の行は 'echo'のあとに' a'をクリアしません。 'set a =" hello "&echo%a%&を設定して" a = "'を設定して検証してみてください。 – dxiv

+0

コマンドプロンプトを起動し、これら3つの区切り行を入力します。 '' set a = "one"&echo%a% '、' set a = "two"&echo%a% '、' set a = "three"&echo %a% '次に、「遅延拡張」と%正常拡大%の差を探してください。 – Aacini

+0

関連:[バッチファイルの遅延展開の例](0120-18753) – aschipfl

答えて

1

です。

変数を評価した後、最初の行は次のようになります。任意のコマンドを実行する前に

set a="hello" & echo hello 

:二行目のように評価されます

set a="hello" & echo %a% 

関連する問題