echo off
set /a a=0
:start
if %a% LEQ 21(
echo test
set /a a=%a%+1
goto start
)
わかりません...ループの開始時に構文エラーが発生するだけです。
echo off
set /a a=0
:start
if %a% LEQ 21(
echo test
set /a a=%a%+1
goto start
)
わかりません...ループの開始時に構文エラーが発生するだけです。
投稿したコードは有効bash script
ではありません。次のようなforループを使用するbatch script
とecho test
20回になります。bash script
#/bin/bash
for i in {1..20}; do
echo test
done
よりもはるかに明確で読みやすいbatch scripts
、ようこそbash
!
バリCによってすでに説明されているエラーに加えて、コードに潜在的な問題があることに注意する必要があります。このコマンドset /a a=%a%+1
の場合:%a%値は、コマンドの実行時に1回だけ展開されます。if
この場合、goto
コマンドによってif
各ループで再度実行されるため、コードが偶然に実行されますが、プログラムがより大きく複雑になり、このsetコマンドが括弧内で数回実行されると、%aが原因でコードが失敗します。 %は、括弧を入力する前a
に変数が持っていた値に1回だけ展開されます。
この場合、この問題を解決する方法は簡単set /a a=a+1
です。コマンドは変数の値を直接取得できるため、パーセント記号を削除するだけです。ただし、ここにはもっと多くのことが関係しています!詳細については、set /?
「遅延変数展開」の説明を入力して注意してください。
21
との間のスペースが欠落して(
いるため、ループ内の数値をと比較し21(
、ステートメントを壊しif
ます。後者が構文エラーを受け取る理由です。
スペースを追加すると、正常に機能します。
echo off
set /a a=0
:start
if %a% LEQ 21 (
echo test
set /a a=%a%+1
goto start
)