回答:
あなたが尋ねたのは少し前のことなので、あなたはすでにあなたの答えを見つけるかもしれません。しかし、私はrorをコーディングするときに同様のことをしようとしました。新しいcmdウィンドウで「rails server」を実行したかったので、新しいcmdを開いてパスを再度見つける必要はありません。
私が見つけたのは、次のようにKスイッチを使用することでした。
start cmd /k echo Hello, World!
「cmd」が新しいウィンドウでアプリケーションを開き、「/ K」が「echo Hello、World!」を実行する前に開始します。新しいコマンドが起動した後。
/ Cスイッチを同様の目的で使用することもできます。
start cmd /C pause
これにより「一時停止」が実行されますが、コマンドが完了するとウィンドウが閉じます。この場合、ボタンを押した後。これは「railsサーバー」に便利で、開発サーバーをシャットダウンするときにウィンドウを閉じる必要はありません。
バッチファイルで以下を使用します。
start cmd.exe /k "more-batch-commands-here"
または
start cmd.exe /c "more-batch-commands-here"
/ c文字列で指定されたコマンドを実行してから終了します
/ k文字列で指定されたコマンドを実行しますが、残ります
詳細については、cmd.exeのドキュメントをcmd /?
参照してください。
コマンド文字列の適切なフォーマットは、引数にスペースが含まれるため、少し複雑になります。以下の例を参照してください。いくつかの例では、ネストされた二重引用符の使用に注意してください。
例:
プログラムを実行し、ファイル名パラメーターを渡します。
CMD /c write.exe c:\docs\sample.txt
プログラムを実行し、長いファイル名を渡します。
CMD /c write.exe "c:\sample documents\sample.txt"
プログラムパスのスペース:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
プログラムパス内のスペース+パラメータ:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
demo1とdemo2を起動します。
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
出典: http : //ss64.com/nt/cmd.html
これは簡単なことではありません。
最善の方法は、「新しいウィンドウ」で実行するスクリプトの一部を別の.batファイルに含めることです。たとえば、スクリプトの残りの部分(変数など)から多くの状態を必要とする場合、これは非現実的かもしれません。1つのオプションは、必要な値(たとえば、操作するdir)をバッチファイルに渡すことです。
start cmd.exe stuff.bat %this_dir%
送信する状態が大量にある場合は、実行時にバッチファイルを生成することを検討してください。
set foo=Hello, World
set list_me=%userprofile%
set tmpdir=c:\windows\temp
set tmp=%tmpdir%\tmp.foo
del /q /f "%tmp%"
echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"
start cmd.exe "%tmp%"
del /q /f "%tmp%"
明らかにこれは些細な例です。
上記の答えは私を助けました。しかし、それでもいくつかの理解が必要でした。これは、Web開発の3つのプロセスを開始するために使用するスクリプトの例です。継続的に実行する必要があるため、3つのウィンドウが開いたままになります。
Mongoは私のパスにグローバルに追加されるので、他の2つのプログラムの場合のようにcdする必要はありません。もちろん、ファイルへのパスはさまざまですが、うまくいけばこれが役立つでしょう。
:: Start MongoDB
start cmd.exe /k "mongod"
:: cd app directory, and start it
cd my-app
start cmd.exe /k "npm run dev"
:: cd to api server, and start that
cd ../my-app-api
start cmd.exe /k "npm run dev"
ここStack Overflowに感謝します。このソリューションは上記の問題を解決しますが、これらのタスクを自動的に実行するように拡張されています。
私のプロジェクトは「アンチクォーラム」と呼ばれていると思います。
作成「init.bat」あなたの中のファイル%USERPROFILEのの%の(オープンディレクトリをCMDウィンドウをし、%USERPROFILE%が何であるかを知るために、カーソルの左側のパスを見てみましょう)
@echo off
cd C:/projects/rails3/antiquorum
if "%1" == "antiquorum" GOTO start
if "%1" == "worker" GOTO worker
if "%1" == "server" GOTO server
if "%1" == "" GOTO end
:start
start cmd /k %USERPROFILE%\init.bat worker
start cmd /k %USERPROFILE%\init.bat server
TIMEOUT 30
start "" "http://localhost:3000/"
GOTO end
:server
rails s
GOTO end
:worker
rake jobs:work
:end
新しいコマンドラインウィンドウで次のように入力します 。C:> init antiquorum
コードは、さらに2つのcmdウィンドウとブラウザを開きます。TIMEOUTは、ブラウザーのエラーを回避します。
:スタートセクションは、作業を行います。paramsをserver、worker、またはnoneと入力してタスク1、2、または4を個別に実行し、「antiquorum」プロジェクトのルートでコマンドを開いたままにすることができます。
楽しい。
2つのコマンドの間に追加すると、両方のコマンドが実行されます。/k
in order
例:
cmd /k echo "hello"
このコマンドは最初に開きcommand prompt
、次にecho "hello"
コマンドを実行します
cmd
。入力するだけですstart rails s
。