批处理脚本中的调用不会转到另一个批处理文件中的指定子例程

Mos*_*ses 1 batch-file call

我有两个批处理脚本:

Batch_A

echo You are in Batch A
call "%~dp0Batch_B.bat" BAR
Run Code Online (Sandbox Code Playgroud)

Batch_B

:FOO
echo You are in Batch A and you have failed.
:BAR
echo You are in Batch A and you have succeeded.
Run Code Online (Sandbox Code Playgroud)

对于我的生活,无论我采用哪种方法进行语法化,第一批中的第2行都不会在Batch_B中调用"BAR"子程序.

我试过它:

 call "%~dp0Batch_B.bat BAR"
 call "%~dp0Batch_B.bat" :BAR
 call "%~dp0Batch_B.bat" %BAR%
 call %~dp0Batch_B.bat BAR
Run Code Online (Sandbox Code Playgroud)

什么都行不通.我知道这可能是一些基本的东西,但我做错了什么?还有其他方法可以实现吗?

gei*_*aos 6

据我所知,你不能在另一个批处理文件中调用标签.你能做的是以下几点:

在Batch_B.bat中:

Goto %~1
:FOO
echo You are in Batch A and you have failed.
:BAR
echo You are in Batch A and you have succeeded.
Run Code Online (Sandbox Code Playgroud)

并在Batch_A.bat中

call "%~dp0Batch_B.bat" BAR
Run Code Online (Sandbox Code Playgroud)

因此,这将Goto Bar在Batch_B.bat中进行评估,然后转到第二个标签.

除此之外,您应该Goto eof:FOO零件结束后添加,这样您也不会通过:BAR零件.