1

forループのINリストに変数値を入れたい。myvariableは、ユーザー入力から取得されます。

例:

for /L %%G IN (1 1 %myvariable%) DO command

この構文を使用すると、ループは実行されません。実行時にINリストをforループに割り当てることは可能ですか?

私を助けてください。

4

2 に答える 2

4

あなたの考えは正しいですが、構文が間違っています。そのはず:

for /l %%G in (1, 1, %myvariable%) do command
于 2012-09-06T18:03:05.910 に答える
2

マークは、IN と ( の間にスペースがないことを特定しましたが、それが実際のコードなのか、質問を作成したときのタイプミスなのかはわかりません。

別の可能性は、後で値を展開する同じコード内で変数が設定されていることです。次のコードは失敗します。

(
  set /p "myvariable=Enter a value: "
  echo myvariable=%myvariable%
)

上記が失敗する理由は、ステートメントが解析されるときに % 展開が発生し、括弧内のブロック全体が単一のステートメントとして扱われるためです。そのため、SET /P を実行する前に存在していた値に展開されます。

実行時に存在する値が必要な場合は、遅延拡張を使用する必要があります

setlocal enableDelayedExpansion
(
  set /p "myvariable=Enter a value: "
  echo myvariable=!myvariable!
)

この種の問題は、IF および FOR コマンドで頻繁に発生します。十分なコンテキストが提供されていないため、これがあなたの問題かどうかはわかりません。

于 2012-09-06T18:30:26.823 に答える