forループのINリストに変数値を入れたい。myvariableは、ユーザー入力から取得されます。
例:
for /L %%G IN (1 1 %myvariable%) DO command
この構文を使用すると、ループは実行されません。実行時にINリストをforループに割り当てることは可能ですか?
私を助けてください。
forループのINリストに変数値を入れたい。myvariableは、ユーザー入力から取得されます。
例:
for /L %%G IN (1 1 %myvariable%) DO command
この構文を使用すると、ループは実行されません。実行時にINリストをforループに割り当てることは可能ですか?
私を助けてください。
あなたの考えは正しいですが、構文が間違っています。そのはず:
for /l %%G in (1, 1, %myvariable%) do command
マークは、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 コマンドで頻繁に発生します。十分なコンテキストが提供されていないため、これがあなたの問題かどうかはわかりません。