7

次のようないくつかのコマンドを含むバッチファイルがあります。

XCOPY 
DEL 
RMDIR

anotherBatch.bat

XCOPY 
DEL 
RMDIR

ご覧のとおり、その間に別のバッチファイル(anotherBatch.bat)が呼び出され、他の処理が行われます。

今私の質問は、anotherBatchが実行された後、コントロールが元のバッチファイルに戻ることはなく、そこで終了することです。

コントロールが確実に戻されるようにするにはどうすればよいですか?

4

2 に答える 2

15

バッチSUBROUTINEは、CALLコマンドを介して呼び出される別のバッチファイルです。

CALL subroutineName Param1 Param2

サブルーチンは、呼び出し元のコードの同じファイルに配置できます。これは、名前の前にコロンを付けることで示されます。

CALL :SubroutineInThisFile Param1 Param2
. . . .
. . . .
. . . .
EXIT /B

:SubroutineInThisFile
. . .
EXIT /B

:AnotherSubroutine
. . .
EXIT /B

EXIT / Bコマンド(EXITだけでなく)は、同じファイル内のサブルーチンの終了をマークするために使用されます。これは、メインプログラムでも実行する必要があります。

あなたの例のように、別のバッチファイルがCALLコマンドなしで呼び出された場合、最終的な結果は「別のファイルへのGOTO」に似ています。呼び出されたファイルが終了すると、プロセスはその時点で終了します。私は以前、この方法で呼び出されたバッチファイルを(「サブルーチン」ではなく)「オーバーレイ」と呼んでいました。

于 2011-12-16T11:00:28.210 に答える
7

他のバッチファイルを明示的に呼び出す必要があります

call anotherBatch.bat
于 2011-12-16T09:32:33.367 に答える