2016-11-03 12 views
0

最初のこと、これはバッチでの最初の試みです。新しいウィンドウでコマンドを実行するバッチを実行する

私は、非常に単純なタスクを実行する小さなユーティリティスクリプトを作成しています。

私がしたいのは、別のコマンドウィンドウでいくつかのアクションを実行することです。

新しいウィンドウを開くことができましたが、問題は最初のコマンドのみを実行し、2番目のウィンドウは最初のウィンドウで実行されるということです。このコードで

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

私はこれを迷惑メールに使っています...それはvegrantboxにsshして尾を走らせます 私が入力した場合のコマンドは問題ではありません手動で – 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" 

&は、他の後に一つのコマンドを実行することです。 cmd /k開いているウィンドウを維持します:

注意(私は、原理を示すために私のコンピュータ上でその仕事をするコマンドを使用)&&||

:いくつかのより多くの便利なオプションについてhereを参照してください。完了したら閉じたい場合はcmd /cを使用してください。

関連する問題