首先,这是批次的第一次尝试。
我正在编写一个执行非常简单的任务的小实用程序脚本,而且我已经准备好了很多东西。
我想要做的是在不同的命令窗口中执行一些操作。
我设法打开了一个新窗口,但我遇到的问题是它只执行第一个命令,第二个命令仍在第一个窗口运行。
这里有一些代码:
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 :(得分: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