2016-03-24 21 views
0

バッチ・フォー・ループで数値の範囲内で何かしたい。バッチ・ループの数値の範囲

FOR /L %%parameter IN (start,step,end) DO command 

このコマンドはおそらく私が必要とするコマンドですが、 "end"値は変数に格納されています。私は次のコードを試しましたが、結果は期待されていません。

FOR /L %%X IN (1,1,%variable%) DO (
    call echo %%X 
    set parameter=id=%%X 
    echo %parameter%% 
) 

結果:変数の

1 
id=5 
2 
id=5 
3 
id=5 
4 
id=5 
5 
id=5 

値は5ですが、それは常に "ID = 5" を返す理由。私は何を期待することは= 5

+0

;およびそこに'echo%parameter %%'行の最後に '%'が多すぎます。あなたのスクリプトを初めて実行すると、結果は 'ECHO is on'です。 'for'ループのように'() 'の間のコードブロック内の変数値を更新する場合、[遅延拡張](http://ss64.com/nt/delayedexpansion.html)が必要です。 – aschipfl

答えて

0
Setlocal EnableDelayedExpansion 
echo off 
Set variable = 5 

FOR /L %%X IN (1,1,%variable%) DO (
    set parameter=id=%%X 
    echo !Parameter! 
) 

私は、これはトリックを行うと思います「ID = 1」〜「IDからである

`エコー%% X 'のためのcall``のための必要はありません
+1

Isn 'この回答は第1の質問コメントと同じですか? – CristiFati

+1

はい、しかし答えはありません。これは答えです –

+1

SOの目的は、すべての質問に回答する必要はありません。また、誰かのコメントから情報を得て、答えを書くことは、ベストプラクティスではありません(いくつかは、それを_scavenging_と考えるかもしれません)。 – CristiFati