我正在尝试编写两个不同的批处理文件,这些文件相互调用,但有些东西无效 这是第一个批处理文件的代码(Main.bat);
@echo off
:top
set /p cmd=
if {condition} call strings.bat goto Case1
if {condition} call strings.bat goto Case2
and so on.....
cls
和我的第二个批处理文件(Strings.bat);
@echo off
:: Go The Hell Out of Here , Nothing To See here.
echo Invalid Command. Retry
call Main.bat goto top
:case1
{My Planning}
call Main.bat goto top
:case2
{My Planning2}
call Main.bat goto top
但是当我输入命令时Main.bat崩溃(即使它是一个有效的,正确的命令)。即使Main.bat崩溃,仍然会到达第二个批处理文件(Strings.bat)的第一行(即
:: Go The Hell Out of Here , Nothing To See here.
echo Invalid Command. Retry
call Main.bat goto top
)
我认为系统没有接收{condition}并且只是按行阅读。
请告诉我我的代码中有什么问题
答案 0 :(得分:0)
在这种情况下,我建议使用一个参数,正如@Stephan在评论中所说的那样。在Main.bat中,使用call strings.bat %cmd%
而不是if语句,并在Strings.bat中使用
if %1==somestring (
your code here
goto :eof
)
或者,甚至更容易,使用@ Stephan的建议,使用
if %cmd%==somestring (
call strings.bat labelname
goto top
)
在Main.bat中并在strings.bat中使用goto %1
,并确保strings.bat中的标签与Main.bat中的调用参数相同,但是:在它们之前使用
这会自动返回到Main.bat中call命令下面的行,这样你就不用担心调用Main.bat了