2016-11-03 4 views
0

Первое кулак, это первая попытка с партией.серия серийных команд серии в новом окне

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

Что я хочу сделать, это выполнить некоторые действия в другом командном окне.

Мне удалось открыть новое окно, но проблема в том, что он выводит только первую команду, а второй по-прежнему работает в первом окне.

Вот код:

ECHO OFF 
CLS 
:MENU 
ECHO. 
ECHO 1 - tail - Error 
ECHO 2 - tail - Access 
ECHO ----------------------------- 
ECHO X - Close 
SET /P M=Select the action number then press ENTER: 
IF %M%==1 GOTO error 
IF %M%==2 GOTO access 
IF %M%==X GOTO EOF 


:error 
ECHO. 
start cmd /K ssh web 
sleep 5 
tail -f /var/log/apache2/error.log 
GOTO MENU 

:access 
ECHO. 
start cmd /K ssh web 
sleep 5 
tail -f /var/log/apache2/access.log 
GOTO MENU 

с этим кодом, открывает новое окно и выполняется команда SSH. Он ждет 5 секунд, а затем пытается закрыть первое окно (одно с меню), а не только открытое окно ssh.

Как это изменить? любая помощь?

Заранее спасибо

+0

Что такое 'tail'? это не родная утилита командной строки Windows; возможно, есть подходящий тег, который вы должны добавить к своему вопросу, тогда ... – aschipfl

+0

Я использую это на бродяжнике ... он будет ssh в vegrantbox, а затем запустит хвост . Команда не проблема, поскольку она работает, если я набираю он вручную – Nick

ответ

0

При запуске команды start cmd/K ssh web элемент управления передается прямо в ваш скрипт меню. (ваша команда сна, которая BTW не является командой по умолчанию в ЦМД, также работает на скрипте меню)

Вам может понадобиться либо попробовать конкатенации свои команды с помощью & или вместо вызова другого сценария. Пример

конкатенации:

@ECHO OFF 
CLS 

:MENU 
ECHO. 
ECHO 1 - tail - Error 
ECHO 2 - tail - Access 
ECHO ----------------------------- 
ECHO X - Close 

CHOICE /C 12X /N /M "Select the action number." 

IF ERRORLEVEL 3 GOTO :EOF 
IF ERRORLEVEL 2 CALL :ACTION access 
IF ERRORLEVEL 1 CALL :ACTION error 
GOTO :EOF 

:ACTION 
ECHO. 
START "" /WAIT CMD /C "ssh web & sleep 5 & tail -f /var/log/apache2/%1.log" 
GOTO :MENU 
0

вы должны дать все команды в новом окне:

start cmd /K "ping google.de & timeout 5" 

& это запустить одну команду за другой. См here для некоторых более полезных опций: &&, ||)

(я использовал команды, которые работают на моем компьютере, чтобы показать принцип)

Примечание: cmd /k будет держать окно открытым. Используйте cmd /c, если вы хотите, чтобы он был закрыт по завершении.

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