2015-11-10 2 views
0

Я пытаюсь написать два разных командных файла, которые вызывают друг друга, но что-то не работает Вот код первого командного файла (Main.bat);Пакетные файлы, вызывающие определенные разделы из eachother

@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 

)

Я думаю, что система не получает {состояние} и только чтение это линия мудрая.

Не могли бы вы сказать мне, что случилось в моем коде

+2

Вы, кажется, угадываете синтаксис команд, возможно, сначала вы должны прочитать помощь команд, которые вы используете. Попробуйте 'IF /?', 'CALL /?' И 'cmd /?' – jeb

+0

Вы не можете вызвать Label в другом пакетном файле. В чем проблема с [этим] (http://stackoverflow.com/a/33615129/2152082)? – Stephan

+0

Да Вы правы. Для этого мне нужно сделать еще раз «if {condition} goto case1»., И это будет проблемой для меня – Precious

ответ

0

В этом случае я бы предложил использовать параметр, как сказал @Stephan в комментариях. В Main.bat, используйте call strings.bat %cmd% вместо вашего, если заявления, а в Strings.bat использовать

if %1==somestring (
your code here 
goto :eof 
) 

Или, еще проще, используя @ предложение Стефана, используйте

if %cmd%==somestring (
call strings.bat labelname 
goto top 
) 

в Main.bat и использования goto %1 в strings.bat и убедитесь, что метки в strings.bat совпадают с параметрами вызова в Main.bat, но с: перед ними, конечно,

это автоматически вернется к строке под командой вызова в Main. летучей мыши, поэтому вам не нужно беспокоиться о вызове ing Main.bat

Смежные вопросы