ループのいくつかの種類があります試してください:あなたは、forループのために、次の構文を使用することができます。ほとんどの場合、for
というキーワードが使用されます。詳細については、cmdコンソールにhelp for
と入力してください。最も基本的には他の言語でfor (var i=0; i<10; i++)
のバッチ相当for /L
ある
for %%x in (tokenset) do (
rem // act on each token
)
です。
for /L %%x in (0,1,10) do (
rem // 0..10
)
何while
またはdo until
ループはありませんが、goto label
があります。たとえば:
set x=0
:loop
set /a x+=1
if %x% leq 9 goto loop
ファイルやコマンドの出力の内容をループするために、for /F
があります。効率のために
for /f "usebackq delims=" %%x in ("filename.txt") do (
rem // act on each line of text
)
for /f "delims=" %%x in ('command') do (
rem // act on each line of output
)
、for
とfor /L
は最速です。しかし、for /L
からgoto
を使用して脱落した場合、スクリプトは完了するまでループを繰り返し続けますが、その間にコマンドをスキップします。これは、for /L %%I in (0,1,1000000)
を使用している場合にはパフォーマンスに影響を与える可能性があり、数回反復してから抜け出そうとするとgoto
を使用します。例:
for /L %%I in (0,1,10) do (
echo %%I
)
は
for /L %%I in (0,1,1000000) do (
echo %%I
if %%I gtr 9 goto next
rem // continues iterating 1000001 times, but only echoes 11 lines.
)
:next
for /F
が少し遅いです...よりもはるかに高速で、かつ
goto
は最も遅いです。
またif
とswitch
を述べていました。 if
、はい。 if
があります。完全な詳細については、cmdコンソールからhelp if
と入力してください。例:
set /a "var = 5 << 2"
if %var% gtr 30 echo What a big number!
set "var=foo"
if /I "%var%"=="Foo" echo Case insensitive match worked with /I
また、非常に便利な、conditional executionもあります。 if errorlevel n
をチェックするのではなく、ゼロ/非ゼロステータスを&&
または||
で確認できます。例:なしswitch...case
ありません
(echo "The quick brown fox") | findstr /i "brown" >NUL && (
echo Contained the word "brown".
) || (
echo Didn't contain the word "brown".
)
、しかし、あなたは、いくつかの創造的な処理のためにgoto
を使用することができます。
@echo off & setlocal
:begin
echo 1: option 1
echo 2: option 2
echo 3: option 3
set /P "opt=Enter a selection: "
for %%I in (1 2 3) do if "%opt%"=="%%I" goto run%%I
echo %opt%: invalid choice.
pause
goto begin
:run1
echo Do stuff!
goto begin
:run2
echo Do something else.
goto begin
:run3
echo Bye!
exit /b
Goが読み:http://steve-jansen.github.io/guides/windows-batch-scripting/index.html –
そして読みhttp://ss64.com/nt/for.htmlと下の関連リンク'For'ループは、バッチプログラミングの核心です。 – SomethingDark
OP、以下の回答のうち1つが特に役に立った場合は、それを受け入れたものとしてマークしてください。なぜこれが重要であるかの説明については、[このQ/A投稿を見る](http://meta.stackexchange.com/q/5234/275822)を参照してください。 – rojo