0

バッチファイルにFORループがあり、echoステートメントでカウンター値を出力します。以下のサンプルコード:

SET cycles= (%%n+1) ****here n is a variable of value 1

for /l %%n in (1,1,%iterations%) do (
echo This is Iteration no: (%%n+%cycles%)
)

計算せず、むしろそれが言うので、これは機能していません

For was not expected this time.

(%% n + %% cycles)も試してみましたが、動作しません。

あなたはplsが助けることができますか?

4

1 に答える 1

2

echoステートメントで括弧を使用しているため、これは単に失敗します。

閉じ括弧がFORループを閉じるので、それらをエスケープする必要があります。
変数をパーセントで展開するときに発生するのと同じ問題はcycle、コンテンツが解析されなくなるため、遅延展開を使用する方が適切です。

setlocal EnableDelayedExpansion
SET cycles= (%%n+1) ****here n is a variable of value 1
set iterations=5

for /l %%n in (1,1,%iterations%) do (
    echo This is Iteration no: (%%n+!cycles!^)
)

編集計算バージョン

setlocal EnableDelayedExpansion
SET cycles= (%%n+1)
set iterations=5

set "cyclesEscape=!cycles:)=^)!"
for /l %%n in (1,1,%iterations%) do (
    set /a result=%cyclesEscape%
    echo This is Iteration no: %%n Formula !cycles!=!result!
)
于 2012-05-15T14:15:56.703 に答える