2016-11-03 74 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

当您运行命令启动cmd/K ssh web控件会直接返回到您的菜单脚本。 (你的睡眠命令,这BTW是不是CMD中的默认命令,也是在菜单上脚本运行)

您可能需要可尝试串联了你的命令使用&或改为调用另一个脚本。

级联例如:

@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

相关问题