【Javaプログラミング】バッチファイル起動方法についてのお悩み

このQ&Aのポイント
  • JavaのプログラムからNetbeansを用いてバッチファイルを起動させる方法についてお悩みです。
  • コマンドプロンプトの画面は表示されるが、バッチファイルの中身が起動されない問題についてご相談です。
  • バッチファイルの配置場所や起動コマンドの指定方法など、どのようにすれば正常に起動できるかアドバイスをお願いします。
回答を見る
  • ベストアンサー

javaプログラミングにおけるバッチファイル起動

JavaのプログラムからNetbeansを用いてバッチファイルを起動させることを考えています。 以下のようにプログラムを作成したところ、コマンドプロンプトの画面は表示されるのですが、バッチファイルの中身が起動されません。 どのようにしたらよろしいかお知恵を拝借願います。 public class Open_JTalk { private Process p; private void start() { try { //String command = "cmd.exe /c start"; String command = "cmd.exe /c start lib/open_jtalk/m001_106.bat"; p = Runtime.getRuntime().exec(command); } catch (Exception e) { } } public static void main(String args[]) { Open_JTalk jtalk = new Open_JTalk(); jtalk.start(); } } バッチファイルを動かすのみの処理で、 String command = "lib/open_jtalk/m001_106.bat"; とした場合は何も処理されずにプログラムが終了してしまいます。 また、バッチファイルはlib/open_jtalk/に配置済みです。 ディレクトリのbatファイルをクリックで動かした場合には正常に起動しています。 どうかよろしくお願いします。

  • Java
  • 回答数4
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

確認してませんが、 String command = "cmd.exe /c start lib\\open_jtalk\\m001_106.bat"; では? Windowsの標準コマンド(この場合cmd.exe)のコマンドラインでのパス区切りは \ だけです。 APIレベルでは、/ も使えますが。

tajitaji323
質問者

お礼

\\の区切り文字を使用したところ無事に動作確認できました。 ありがとうございました。

その他の回答 (3)

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.4

String command = "cmd.exe /c start i:/java/clock2.bat";  でも、 String command = "cmd.exe /c start i:\\java\\clock2.bat";  でも動きますね。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.3

lib/open_jtalk/m001_106.bat があるパス(ドライブ名含む)で実行していますか? こちらでテストしたら動きましたよ。

tajitaji323
質問者

お礼

本日、区切り文字を\\にしてみたところ無事に動きました。 昨日は焦っていてどこか設定ミスがあったのかもしれません。 ありがとうございました。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

ひょっとしたら以下の URL に書かれていることが絡んでいるかもしれません。 http://pieceofnostalgy.blogspot.jp/2012/02/java.html ためしに cd の結果を絶対パスのファイルにリダイレクトするように command を修正して、その結果を確認してはいかがでしょうか。

tajitaji323
質問者

お礼

こちらの内容は関係していないようでした。 ご回答・ご指摘ありがとうございました。

関連するQ&A

  • WindowsNT,Windows2000のバッチファイル

    おしえてください。 WindowsNT,Windows2000で作成するバッチファイルの拡張子は 「.bat」、「.cmd」のどちらがベターですか? WindowsNT,Windows2000でバッチファイルを作成して 実行したいのですが、そのバッチファイルの拡張子として (1)「.bat」、(2)「.cmd」の2種類で実行可能と認識しています。 私は (1)「.bat」は「command.com」、(2)「.cmd」は「cmd.exe」より動作すると 思っています。 よって(1)「.bat」だと16ビットで動作するため、何たかの不具合がでないのかなと懸念しています。 (1)「.bat」、(2)「.cmd」どちらでもいいのなら現在つくっている (1)「.bat」でいきたいのですが・・・。 どうかご回答お願いします。

  • サービスプロセスからバッチファイルを起動すると、cmd.exeが増幅する。

    私が作成したサービスプログラム(コントロールパネル-管理ツール-サービスに表示されるプロセス)から、以下の記述のバッチファイル(test.batとします)をCreateProcess()にて起動したところ、test.bat内のap.exeは起動せず、cmd.exeのみが増幅していきます。(タスクマネージャにて確認)起動できる場合もあるのですが、何が原因なのでしょうか? test.batの内容 start /B "C:\Program Files\TEST" ap.exe

  • PHPでサーバーにインストールされたアプリケーションを起動させたい

    バッチファイルを使って、サーバーにインストールを起動させようとしています。 が、PHPのexec関数が動きません。 バッチファイルを開こうとすると固まってしまいます。 xxx.bat ---------------------- cd C:\Program Files\xxx setup.exe ---------------------- xxx.php ------------------------------ $cmd = "cmd.exe /c start xxx.bat"; exec( $cmd ); ------------------------------ Windowsサーバー2003 R2 Apache2.2 お手数ですが、どなたかご教示下さい。

    • ベストアンサー
    • PHP
  • バッチファイルの起動

    WEBの画面上からボタンをクリックして、バッチファイルを起動させる プログラムを作成しています。 プログラム・バッチ共ローカルで上記のテストを行なった所、正常にバッチを起動することができませんでした。 プログラム・バッチをサーバに移行し上記のテストを行なった所、バッチが起動せきませんでした。 プログラムは以下の通りです。どこが悪くてサーバ上でバッチが起動できないのでしょうか?。 宜しくお願い致します。     (JSP) <hr> <br> <table width="80%"> <tr> <td> <s:submit value=" 入力完了 " cssClass="form_button" action="TEST" method="doEnter" /> </td> </tr> </table> </s:form> </body> <html>     (JAVA) public String doEnter() throws Exception { boolean vCheckResult = true; String result; try { String sCmd = "D:\\bat\\jksys\\atelnet.bat"; ProcessBuilder builder = new ProcessBuilder(sCmd); Process process = builder.start(); int ret = process.waitFor(); System.out.println("process exited with value : " + ret); }catch (IOException e) { // start()で例外が発生 e.printStackTrace(); } catch (InterruptedException e) { // waitFor()で例外が発生 e.printStackTrace(); } return "success"; }

  • Javaプログラムからバッチ起動

    Runtimeクラスを使用し、バッチファイルをJavaプログラム内で呼び出す処理を実装しました。Javaにより呼び出されるバッチファイル(X.bat)は、他の2つのバッチファイル(A.bat、B.bat)を呼び出すようにプログラムされています。ここで質問なのですが、実際にこのJavaプログラムを実行しX.batを呼び出し、最終的にA.bat、B.batが呼ばれているかどうかの確認をしたところ、どうもB.batが呼ばれずにA.bat終了後、処理が終了してしまっているなのですが、この原因についてご教授いただきたく質問いたしました。

    • ベストアンサー
    • Java
  • バッチファイルについて

    バッチファイルを作成して、スカイプとMSNメッセンジャーの同時起動はできるのですが、そのあとに「C:\Windows\system32\cmd.exe」というコマンドプロンプトの画面が3つ出てしまうのですが、これはアプリ起動の後に自動的に消せないものなのでしょうか?教えてください。 (作成したバッチファイル) start CD C:\PROGRA~1\Skype\Phone skype.exe start CD C:\PROGRA~1\"Windows Live"\Messenger msnmsgr.exe exit; skype.exeの前にexit;と書いた場合、MSNが起動しませんでした。

  • バッチファイルが認識されず起動しません

    バッチファイルをダブルクリックしても、「○○○. batは有効なWin32アプリケーションではありません」と表示されて、起動できません。 ■環境:WindowsXP 64Bit版 SP3 ■以下、確認したこと (1)非常にシンプルなTEST.BATを作成したが、同じエラーが表示され起動できませんでした。   このバッチファイルの内容は cmd/k dir c: (2)Windowsの拡張子に対する関連付けは、「Windowsバッチファイル」になっていました。 (3)環境変数のPATHEXTに.BATは登録されていました。 (4)自分以外のユーザーでログオンすると、バッチは正しく動作します (5)Dos窓にバッチファイルをドラッグ&ドロップすると、正しく動作します 何かWindowsの設定がおかしいのでしょうか? とても困っています、教えてください!

  • javaからバッチファイル実行

    お世話になります。 javaプログラムからバッチファイルを呼び出して実行するようにしたいのですが、上手くいきません。 サイトを参考に以下のように書いてみましたが、 バッチファイルの一行目のみ実行している?ようで、二行目以降の処理をしていないようです。 バッチファイル単体での実行は正常に動作しています。 お気づきの点がありましたら教えて頂けないでしょうか。 try { String[] cmd = {"バッチファイルのパス"}; Process p = Runtime.getRuntime().exec(cmd); while(true){ try{ p.exitValue(); }catch(IllegalThreadStateException e){ continue; } break; } } catch (IOException e) { e.printStackTrace(); }

    • ベストアンサー
    • Java
  • バッチファイルで複数のWebページやアプリを起動する方法

     毎朝、複数のWebページとアプリを起動するのですが、いちいちIEを起動して、お気に入りからURLを選択したり、アプリを起動していたのですが、バッチファイルで一度にすべて起動できるのではないか。という情報を得たのでですが、良くわかりません。ご教示いただけますでしょうか。 私の環境ですが、OSはXPです。  今まで知り得た情報は下記のとおりです。 メモ帳を新規に起動して start "" "C:\Program Files\Internet Explorer\IEXPLORE.EXE" start "" "http://yahoo.co.jp/" start "" "C:\Program Files\Internet Explorer\IEXPLORE.EXE" start "" "http://www.google.co.jp/" start "" "C:\Program Files\Internet Explorer\IEXPLORE.EXE" start "" "http://goo.ne.jp/" start "" "C:\WINDOWS\system32\notepad.exe" と、入力し、ファイル名を 朝.bat にして保存する。 朝.batをダブルクリックすると、yahooとgoogleとgooとメモ帳がそれぞれ起動できると思ったのですが、IEが1つ多く起動します。  あと、可能であれば、最大化して開くためのオプションとかもあれば併せてご教示ください。  

  • バッチファイルを実行するとエラーが出る

    win2000を利用しています。起動時に自動的にアプリケーションを実行させるバッチファイルを作りたいのですがエラーがでます。 以下のように書いています。このバッチファイルをスタートアップに入れて実行させたいと思っています。 そして試しに手動で実行してみると、構成ファイルが見つからない、パス名を確認してくださいと言ったいエラーが出ます。 パスが間違っているのかと思い、 「C:\Program Files\Internet Explorer\IEXPLORE.EXE」だけをファイル名を指定して実行をするとちゃんとIEが起動します。 何が間違っているのかわからないのですが、ヒントだけでもお願いします。 test.bat(ファイル名) --------------------------- start C:\Program Files\Internet Explorer\IEXPLORE.EXE ---------------------------

専門家に質問してみよう