あなたが何をしようとしているのかについて、より良い説明が必要です。機能しないコードから何が必要かを突き止めようとすると、推測ゲームになります。
最初に認識すべきことは、ステートメントを&OR で区切って別の行に配置する必要があることです。そうしないと、右側の ENTIRE 式が に割り当てられVARます。
私はあなたが何を意味したと仮定します
for /L %%i in (1, 1, 100) do (
SET VAR=%%i %% 5
set /a CAL=%VAR% %% 5
echo %CAL%
)
これでは、あなたが本当に達成したいことはわかりません。valおそらく、式の値に設定したかったのでしょうスイッチ%%i %% 5が必要です/A
for /L %%i in (1, 1, 100) do (
SET /A VAR=%%i %% 5
set /a CAL=%VAR% %% 5
echo %CAL%
)
さて - 次の行、Are you going to set CALto the value of %VAR% %% 5? まあ-それに関するいくつかの問題-最初に、VAR0..4になるので、それに設定CALすると、関係なく0VAR %% 5に設定されます。CAL
2 番目の問題はより重大で、次の行にまで及びます。
FOR ループは、FOR から終わりのかっこまで解析されます。PARSE-TIME で、any%var%は変数の THEN-CURRENT 値に置き換えられます。THENコードが実行されます。
どちらvarもcalPARSE時に設定されていないため、実行されるのは
for /L %%i in (1, 1, 100) do (
SET /A VAR=%%i %% 5
set /a CAL= %% 5
echo
)
SET CALそのため、行に「オペランドがありません」というエラーが表示され、ECHO「エコーがオフです」(または場合によってはオン) が適切に報告されます。
これらの問題を克服するには、いくつか変更を加える必要があります...
SETLOCAL ENABLEDELAYEDEXPANSION
for /L %%i in (1, 1, 100) do (
SET /A VAR=%%i %% 5
set /a CAL=!VAR! %% 3
echo !VAR! !CAL!
)
ここで、が PARSE-TIME 値を返すが RUN-TIME 値を返すSETLOCAL ENABLEDELAYEDEXPANSIONモードを確立することに注意してください。は 0から4 の間で変化するため、変化を確認できるようにの計算を変更しました。ECHO はとの両方の RUN-TIME 値を報告します。%var%!val!VARCALvarcal