バッチ ファイルで関数を呼び出します。関数がフローの続きを終了した後、バッチ ファイルの最後にあるタグ END に移動すると、関数 aa を呼び出して zi を出力するスペースに戻ります。
:b
call :aa 1
echo zi
call :rr
**goto end**
:aa
if...(
goto b)else(
goto end
:end
echo finish
バッチ ファイルで関数を呼び出します。関数がフローの続きを終了した後、バッチ ファイルの最後にあるタグ END に移動すると、関数 aa を呼び出して zi を出力するスペースに戻ります。
:b
call :aa 1
echo zi
call :rr
**goto end**
:aa
if...(
goto b)else(
goto end
:end
echo finish
この質問はあまり意味がありません。最初は、あなたの言っていることを理解するのに苦労していますが、コードを見ると明らかなことがいくつかあります。
ラベルは:label
ではなくと書かれていlabel:
ます。したがってb:
、ドライブを変更するだけで、aa:
構文end:
が無効になります。
サブルーチンを呼び出すと、すべての「バッチ ファイルの終了」条件が「サブルーチンからの戻り」を意味するようになります。これには、ファイルの終わりgoto :eof
とexit /b
. 通常、サブルーチンは で終了し、通常のプログラム フローの後でサブルーチンが実行されるのを避けるために、すべてのサブルーチンの上goto :eof
に同様のものを使用する必要もあります。
if %1>2
おそらく「構文エラーですが、標準出力ストリームを標準エラーストリームにリダイレクトしています」という意味です。少なくともここでは1> was unexpected at this time.
. これはほぼ期待されています。「If foo then bar else baz」と言いたい場合は、次のようにします。
if foo (
bar
) else (
baz
)
>
また、バッチファイルと比較したり、バッチファイル内で比較したりすることはできません<
。GTR
またはを使用する必要がありますLSS
:
if %1 GTR 1 goto b else goto end