我想知道是否可以从另一批中启动特定goto函数中的批量精简?
因此,不只是启动另一个批处理文件,而且还有“母亲”批处理在“子”批处理中选择一个特定的goto选项?
答案 0 :(得分:1)
只需拥有父/母批处理文件,并将参数传递给子批处理文件。
<强> mom.bat 强>
@ECHO OFF
ECHO Here we go
CALL child.bat 3
PAUSE
<强> child.bat 强>
@ECHO OFF
IF "%1"=="1" Goto 1
IF "%1"=="2" Goto 2
IF "%1"=="3" Goto 3
EXIT
:1
ECHO 1!
PAUSE
EXIT
:2
ECHO 2!
PAUSE
EXIT
:3
ECHO 3!
PAUSE
EXIT
当母批处理文件将参数 3 传递给子批处理文件时,此示例应回显 3!。
答案 1 :(得分:1)
是的,但这是一个黑客攻击。
通常,您可以通过调用批处理文件中的一些帮助来完成此操作。
<强> main.bat 强>
call second.bat :theFunction
* second.bat
goto %1
...
:theFunction
黑客使用了一个功能错误,你只需要与second.bat中相同的标签。
只有在没有call
<强> main.bat 强>
call :theFunction
echo back in main
exit /b
:theFunction
second.bat
echo back in the func in main, this line will never reached
exit /b This line will also never reached
当second.bat返回时,它将返回到main.bat中call
之后的行
答案 2 :(得分:1)
1.bat
call 2.bat /c goto :this
call 2.bat /c call :that
2.bat
if "%1"=="/c" shift & shift & %2 %3
goto :eof
:this
echo This!
goto :eof
:that
echo That!
goto :eof
编辑:我原来的帖子最接近正确。但我已经纠正了我的错误。
我双向移动以将%1和%2移到左侧,将任何其他变量传递到%1和%2位置。然后我执行%2和%3,因为在完成执行/解释行之前,移位的效果不会生效。
答案 3 :(得分:0)
在您正在调用的批处理文件中,将其放在顶部
if not %1=="" goto :%1
在用于调用它的批处理文件中
call b.bat labelname
显然,这取决于您尝试做什么,但基本功能有效。