あなたが何をしようとしているのかについて、より良い説明が必要です。機能しないコードから何が必要かを突き止めようとすると、推測ゲームになります。
最初に認識すべきことは、ステートメントを&
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 CAL
to the value of %VAR% %% 5
? まあ-それに関するいくつかの問題-最初に、VAR
0..4になるので、それに設定CAL
すると、関係なく0VAR %% 5
に設定されます。CAL
2 番目の問題はより重大で、次の行にまで及びます。
FOR ループは、FOR から終わりのかっこまで解析されます。PARSE-TIME で、any%var%
は変数の THEN-CURRENT 値に置き換えられます。THENコードが実行されます。
どちらvar
もcal
PARSE時に設定されていないため、実行されるのは
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!
VAR
CAL
var
cal