別のcmd.exeプロンプト内から新しいcmd.exeウィンドウを作成する


102

CruiseControl.NETをセットアップしています。私が抱えている問題は、CCをコンソールアプリケーションとして実行していて、ビルドが正常に完了して(execを使用して)実行されると、CruiseControl DOSプロンプト内で起動することです。私は単純なバッチファイルを使用してアプリを起動していますが、CCと同じプロンプト内で実行すると、CCはアプリが実行されている限りビルドが継続していると見なします。

cmd.exe別の別のプロンプトウィンドウを生成するコマンドラインパラメーターはありますか?


1
cmd.exeはCUIシェルであり、GUIではありません。ウィンドウを作成しません。コンソールホストプロセスであるconhost.exeのインスタンスによって作成および管理されるコンソールウィンドウを使用します。CUIプログラムが正常に起動した場合、ベースクライアントDLL(kernel32.dllまたはkernelbase.dll)の初期化コードは、親のコンソールがある場合はそれを継承するか、作成フラグDETACHED_PROCESS(つまりコンソールなし)で開始しない限り、新しいコンソールを割り当てます。。CREATE_NEW_CONSOLE(CMDがstart使用するように)作成フラグで開始した場合、ベースDLLは親のコンソールを継承するのではなく、常に新しいコンソールを割り当てます。
Eryk Sun

回答:


201

私はこれがうまくいくと思います:

start cmd.exe

5
start "start /?"のさまざまなオプションをすべて確認してください。/ waitと/ Iは便利です。
Peter Gfader 2008

46
fwiw、起動後に 'cmd.exe'を置く必要さえありません。「開始」という言葉だけで十分です。
JustJeff 2010年

start / d <path>新しいcmdウィンドウのパスを設定したい人向け。ここで詳細な説明。
anton.mo 2018年

56

必要なコードは次のとおりです。

start cmd.exe @cmd /k "Command"

10
何し@cmdてるの?そのためのドキュメントはありますか?
michas

1
@通常プロンプトに表示される直接出力を抑制しますが、コマンドは引き続き実行されます。
Thielicious 2016

私はこれを使用しましたが、動作しますが、キーボード割り込みctrl + cで実行中のプログラムを強制終了しようとしても、実行中のプログラムは停止しません。新しく開いたコマンドプロンプトウィンドウを閉じたときにのみ停止します。
Sachin G.

を使用した複数行のコマンドでは機能しません^。:(これに対処する方法はありますか?
user2173353


22
start cmd.exe 

別のウィンドウを開きます

start file.cmd 

バッチファイルを開き、別のコマンドプロンプトで実行します



2
START "notepad.exe"
echo Will launch the notepad.exe application
PAUSE

cmdファイルタイプを作成するには、内容を.batとして保存するだけです。

@echo
TITLE example.bat
PAUSE
taskkill/IM cmd.exe

それを「example.bat」ファイルにして保存し、それを開いて実行します。


1

あなたのbatファイルに簡単に書き込む

@cmd

または

@cmd /k "command1&command2"

4
&新しいプロンプトで複数のコマンドを実行していただきありがとうございます。追加したいexitので、コマンドの実行が終了するとプロンプトが閉じます。
Sylhare 2017

0

また、CCNETタスクの最後にデーモンプロセス/サーバーを実行するバッチファイルを実行してみました。CruiseControlがプロセスの終了を待たずに独立した非同期プロセスを生成する唯一の方法は、次のとおりです。

  1. デーモンプロセスを実行するバッチファイルを作成する(サーバーアプリケーション)
  2. タスクスケジューラを使用してバッチファイルをCCNETタスクとして実行する(schtasks.exeを使用)

    schtasks.exe /create /F /SC once /ST 08:50 /TN TaskName /TR "c:/path/to/batchFileName.bat"
    
    • 08:50はHH:MM時間形式です

ccnetの開始時にプロセスを終了する必要があるかもしれません

PS:「start cmd.exe」を使用して選択した回答が機能しません。新しいコマンドプロンプトは実際に生成されますが、CCNETは生成されたcmdが完了するまで待機します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.