いくつかの簡単なバッチ コマンドを 1 つのバッチで実行しようとしています。
各コマンドは次のようにバッチ コマンドです。
rails generate scaffold illness name:string
rails generate scaffold ingredient name:string origin_id:integer
現在、バッチ ファイルは 30 個のコマンドすべてを実行する代わりに、最初のコマンドのみを実行してプロンプト ラインに戻ります。そのため、手動で実行する必要があります。
答え1
call
バッチファイルの前に単語を配置する必要があります...
@エコーオフ レールを呼び出し、足場を生成し、病気の名前:文字列 ralis を呼び出して、スキャフォールド成分を生成します。name:string origin_id:integer
これは、「rails」が実際には rails.bat であることを前提としています。
答え2
jftuga による以前の回答は正しいですが、より完全な回答は次のとおりです。
@echo off
call rails generate scaffold illness name:string
call ralis generate scaffold ingredient name:string origin_id:integer
あなたは電話バッチファイルの各行の前に、新しいプロセスを起動する外部コマンドを記述します。これにより、各呼び出しの後にスクリプトを続行できます。したがって、DIRやCOPYなどの内部コマンドは呼び出しを必要としません。ただし、新しいコマンドプロンプトまたは別のバッチファイルを実行すると、制御は完全にそのプログラムに渡されます。ただし、電話は行の先頭にあります。実際には、新しいコマンドプロンプトは、出口それ。
一部のプログラムは実行中に一時停止しますが、完了するとバッチ ファイルの次の行に戻ります。次のバッチ ファイルでは、スクリプトはメモ帳を呼び出すたびに一時停止し、メモ帳が終了した後に開始します (両方の場合)。したがって、実質的には同じです。
notepad.exe
call notepad.exe
echo It came back.
しかし、別のバッチファイルを呼び出す場合、前に呼び出しがない限り、完全な制御が新しいプロセスに渡されます。したがって、次のコードでは、最初のバッチファイルの呼び出しは完了すると戻りますが、2 番目は戻りません。そのため、最後の echo 行は実行されません。call firstBatch.bat SecondBatch.bat echo この行は表示されません。
Railsコマンドがどのように動作するのかはよく分かりませんが、バッチセッションのようです。おそらくバッチファイルだったのでしょう。cmdの最初の2回の呼び出しは、そのインスタンスでexitと入力するまで返されず、以前のシェルに戻ります。電話は無関係です。しかし、3 番目は /c スイッチを使用しており、これはコマンドを実行して自動的に戻ることを示しています。コマンドを送信した後、新しい cmd セッションをアクティブにしておく場合は、/K スイッチを使用します。これに関する詳細なヘルプ:cmd /?
cmd
call cmd
cmd /c dir
echo You will see this after typing Exit twice to leave two new instances of cmd. The third instance returned automatically.