ループと%演算子を使用してWindowsバッチファイルコマンドを書くにはどうすればよいですか?


5

バッチファイルに次のコードを記述します。どうやってやるの?

for (i=0; i<100; i++)
{
   rem = i % 10;
   if(rem == 0)
   {
     // ECHO something
   }
   else
   {
     ECHO i         
   }
}

回答:


11

バッチファイルでループ内の変数展開が機能するため、かなり複雑です。バッチファイルには独自のfor構造があります。gotosをいじる必要はありません。変数の展開用に予約されている%%ように、バッチファイルのモジュロ演算子%です。

このコードは私のために働く:

@echo off
setlocal enabledelayedexpansion
for /l %%i in (0,1,99) do (
  set /a remainder = %%i %% 10
  if !remainder! == 0 (
    echo something
  ) else (
    echo %%i
  )
)
endlocal

1
Nitpicking i<100は最大99を意味するのでfor /l %%i in (0,1,99) do (
LotPings

ループの遅れ拡張困難を避けるために、サブルーチンの呼び出しでcomblnedすることができます
miracle173

2

モジュロはで行うことができますset /a。Cでループgotoを変換する方法と同じように、でループを実行できますforgoto

@echo off
set "i=0"
:loop
if %i% equ 100 goto :endfor
set /a "mod=i %% 10"
if %mod% equ 0 (
    echo something %mod%
) else (
    echo %i%
)
set /a "i+=1"
goto :loop
:endfor

これremはコメントを開始するためのコマンドであるためrem、スクリプトで使用すると望ましくない動作が発生する可能性があることに注意してください

でループをより簡単にすることができfor /lますが、の全体が一度に解析されるため、遅延展開有効にする必要がありますfor


ループの遅れ拡張困難を避けるために、サブルーチンの呼び出しでcomblnedすることができます
miracle173
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.