2017-11-15 11 views
0

私はバッチファイルにforループを持っています。私は、カウンター変数でこの奇妙な動作を取得します。私は経験豊富なプログラマーですが、バッチファイルの初心者です。ループ内のカウンタがエコーされない

@ECHO OFF 
SETLOCAL ENABLEEXTENSIONS 

SET list=test1 test2 test3 

FOR %%a IN (%list%) DO (
    SET variable=%%a 
    ECHO %%a 
    ECHO -%variable%- 
) 

私は出力が

test1 
-test1- 
test2 
-test2- 
test3 
-test3- 

ことを期待するが、それは実際に私が間違って何を

test1 
-test3- 
test2 
-test3- 
test3 
-test3- 

をやっているのですか?

+0

はい、そうです。それを見つけることができなかったことを申し訳ありません - そのような機能が存在していたかどうかわかりませんでした。 – Simone

答えて

1

実際の予想される出力は、私が何かを得るために驚いだろう

test1 
-- 
test2 
-- 
test3 
-- 

です。間違いなく出力を再現することはできません。

( ... 構成を読み込むと、変数が1回だけ展開されます。 ( ... )内の割り当てが( ... )の範囲内で有効になるようにするには、setlocal enabledelayedexpansionとし、!variable!を使用する必要があります。 (または、一部の場合は( ... の代わりにcallサブルーチンを使用します)。

+0

実際、それは私が最初の数回は何を得ましたか?私は何とかグローバル変数の変数を汚染している可能性がありますか?とにかく、あなたのソリューションは動作しますので、私はこの答えを受け入れるつもりです。ありがとうございました! – Simone

関連する問題