批处理 - 在新窗口上运行命令系列

时间:2016-11-03 10:24:16

标签: windows batch-file cmd

首先,这是批次的第一次尝试。

我正在编写一个执行非常简单的任务的小实用程序脚本,而且我已经准备好了很多东西。

我想要做的是在不同的命令窗口中执行一些操作。

我设法打开了一个新窗口,但我遇到的问题是它只执行第一个命令,第二个命令仍在第一个窗口运行。

这里有一些代码:

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窗口。

我该如何更改?有什么帮助吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

你必须将所有命令都提供给新窗口:

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

&是在另一个之后运行一个命令。有关更实用的选项,请参阅here&&||

(我使用的命令在我的计算机上工作以显示原理)

注意:cmd /k会使窗口保持打开状态。如果您希望在完成时关闭它,请使用cmd /c

答案 1 :(得分: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