8

ループするたびに変数を 1 ずつインクリメントし、変数が 5 に等しいかどうかを確認し、そうでない場合は再度ループするバッチ ファイルを作成しようとしています。これにはおそらくwhileループがあることは知っていますが、その方法を知らなかったので、今は楽しみのためにBatchを学ぶのを楽しんでいます

コードは次のとおりです。本来の方法で動作せず、0: を表示するだけで、それ以外は何もしません。では、どうすれば修正できますか?変数を間違って設定およびインクリメントしているように感じます.2つのifステートメントについて混乱している可能性がありますか? (else if.... はありますか?) とにかく、助けてくれてありがとう

@echo off
set /p i=0:
goto A

:A
set /p i=i+1:
if i != 5 goto C
if i == 5 goto B

:C
echo Test :D

:B
pause>nul

注: 私は Batch についてあまり詳しくありませんし、プロでもありませんが、学ぶことが好きで、将来の参考のために、また楽しんでいるからです。したがって、このコードはおそらく適切ではありませんが、これを達成する方法を知りたいです。

4

6 に答える 6

24

これは、達成しようとしている while ループをシミュレートする方法です。goto必要なものは 1 つだけです。

@echo off
set /a x=0
:while
if %x% lss 5 (
  echo %x%
  pause>nul
  set /a x+=1
  goto :while
)
echo Test :D
于 2013-03-16T14:18:41.297 に答える
4

数値を変数に設定するには、/aスイッチを使用できます。

/ Aスイッチは、等号の右側の文字列が評価される数式であることを指定します。

SET /?すべてのヘルプを入力してください)。

次に、gotoフローを確認します。これはAにループバックすることはありません。

if3番目に、式の構文を確認します(!=バッチには存在しません)。

于 2013-03-16T14:07:43.857 に答える
3

これはうまくいくはずです:

@echo off
set var1=0

:loop
    set /a var1=%var1%+1

echo %var1%

if %var1% EQU 5 (
    goto :end
) else (
    goto :loop
)

:end
    pause
于 2013-03-16T14:14:05.873 に答える
0
@echo off
set a=0
:Count
set /a a=a+1
echo %a%
goto Count
于 2015-04-22T20:27:42.570 に答える