質問編集履歴

2 a

namenamenameko

namenamenameko score 234

2018/03/14 11:42  投稿

Windowsのbat(cmd)ファイルで時間のかかるコマンドを一つずつ連続実行する方法
Windows Server(2008R2)上で、「batファイルをダブルクリックしたら、Githubからpullしてrailsのサーバーを起動しなおす」というバッチを書く必要があります。Windowsのbatファイルははじめて書きます。
やったこと: このように書きました。
```
cd path/to/project
git pull origin master
bundle exec rake assets:precompile RAILS_ENV=production
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rails s -e production...
```
(実際には、Railsのサーバーを一旦終了するコマンドも調べて追加する必要があります)
サーバーのパフォーマンスが悪いので、bundle execのコマンドには数十秒~数分かかります。
現象: これをダブルクリックすると、3行目のプリコンパイルが終わった瞬間にコマンドプロンプトのウィンドウが閉じてしまいます。
個別に全く同じコマンドを実行しても正しく実行されるため、bat特有の問題と考えています。  
調べたこと: ネットで調べたのですが、こういう場合はコマンドにかかる時間を予測してtimeoutするのがいいと書いてありました。また、別のbatに分けてcallする?という方法もありました。
timeoutする方法だと時間を計ったりせねばならずスマートではないかと思うのですが、こういう場合はどのようなやり方にするのがいいのでしょうか。シェルスクリプトのようにいかないため困っています。
  • Windows

    3137 questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • Cygwin

    134 questions

    Cygwinは、Unixのような環境を、Windows上で構築させるコマンドラインインターフェースです。

  • MinGW

    113 questions

    MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

  • Windows Server

    773 questions

    Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

1 a

namenamenameko

namenamenameko score 234

2018/03/14 11:40  投稿

Windowsのbat(cmd)ファイルで時間のかかるコマンドを一つずつ連続実行する方法
Windows Server(2008R2)上で、「batファイルをダブルクリックしたら、Githubからpullしてrailsのサーバーを起動しなおす」というバッチを書く必要があります。Windowsのbatファイルははじめて書きます。
```
cd path/to/project
git pull origin master
bundle exec rake assets:precompile RAILS_ENV=production
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rails s -e production...
```
(実際には、Railsのサーバーを一旦終了するコマンドも調べて追加する必要があります)
サーバーのパフォーマンスが悪いので、bundle execのコマンドには数十秒~数分かかります。
これをダブルクリックすると、3行目のプリコンパイルが終わったとこでコマンドプロンプトが落ちてしまいます。
現象: これをダブルクリックすると、3行目のプリコンパイルが終わった瞬間にコマンドプロンプトのウィンドウが閉じてしまいます。
ネットで調べたのですが、こういう場合はコマンドにかかる時間を予測してtimeoutするのがいいと書いてありました。また、別のbatに分けてcallする?という方法もありました。
調べたこと: ネットで調べたのですが、こういう場合はコマンドにかかる時間を予測してtimeoutするのがいいと書いてありました。また、別のbatに分けてcallする?という方法もありました。
timeoutする方法だと時間を計ったりせねばならずスマートではないかと思うのですが、こういう場合はどのようなやり方にするのがいいのでしょうか。シェルスクリプトのようにいかないため困っています。
  • Windows

    3137 questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • Cygwin

    134 questions

    Cygwinは、Unixのような環境を、Windows上で構築させるコマンドラインインターフェースです。

  • MinGW

    113 questions

    MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

  • Windows Server

    773 questions

    Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る