• 締切済み

バッチ起動したいのですが…

javaからバッチを起動したいのですが、以下の記述ではうまくいきません。動作として、具体的には、バッチからあるプログラムを起動し、for文によって、プロンプトがエンドレスに表示され続けるという動作をするはずなのですが、エラーは出ないのにうまくできません。ただし、バッチから起動するプログラムのファイルを、同じjavaのワーキングディレクトリに入れるとうまく動作します。ただ、この方法だと、融通が利かないし、ディレクトリがごちゃごちゃしてしまうので、使えません。 自分の中では、パスの問題なのだろうかと思うのですが、どうすればうまくいくのでしょうか? try { Process p = Runtime.getRuntime().exec("C:\\10\\UI.bat"); } catch (IOException ex) { System.out.println("erorr"); ex.printStackTrace(); }

  • Java
  • 回答数2
  • ありがとう数0

みんなの回答

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

想像で物言うの続きですが、そのC++プログラムは、出力先~出力環境をカレントディレクトリとして書かれているので、“同じjavaのワーキングディレクトリに入れるとうまく動作"するんでしょうね。問題の、うまく動作しないときには、プログラムはどこに置かれているんですか?。なにしろ、そこが、プログラムにとってはカレントディレクトリなんですよ。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

PATHの設定が妥当か、検討してください。 そのバッチファイルから別のJavaプログラムを起動しているのであれば、CLASSPATHについても検討してください。

matsutake0
質問者

補足

_ranco_さん ご回答ありがとうございます。 >PATHの設定が妥当か、検討してください。 PATHの設定というのは,J2SEをインストールする時に設定するもののこと ですか?それとも、 Process p = Runtime.getRuntime().exec("C:\\10\\UI.bat"); のC:\\10\\UI.batの部分のことですか? >そのバッチファイルから別のJavaプログラムを起動しているのであれば、 >CLASSPATHについても検討してください。 すいません。説明が足りなかったようなので、補足させて頂きますと,バッチから起動しているプログラムはjavaではなくC++で記述されたプログラムになります。この前提で動作させるためのアドバイスを頂けたらと思います。 行き詰ってしまってて、本当に困っています。お助け下さい。

関連するQ&A

  • 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
  • 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
  • Runtime.getRuntime().exec("cmd /c start run.bat");でコマンドプロンプトが出ないようにしたい

    WindowsXPにおいてJavaのプログラムから Runtime.getRuntime().exec("cmd /c start run.bat"); としてbatファイルを呼び出しています。 このようにすると、batファイルの起動はできるのですが、黒いwindowが出てしまいます。windowを出さずに同様の結果となる方法はありますか?

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

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

    • ベストアンサー
    • Java
  • javaでJavaWebStartを起動する方法

    javaのイベントで、JWSを起動したいので、以下のようにしましたが、 起動はするのですが、10秒程Internet Explorerのフレームがモニターいっぱいに表示されてしまいます。また、ダウンロード中のウィンドウが、止まり起動しない事がしばしば有ります。 JWSのショートやっとやWEBベージのリンクを押したときのように、直接すぐに起動したいです。 方法をご存知の方がおられましたら教えてください。 よろしくお願いいたします。 try { Runtime.getRuntime().exec( "c:\\Program Files\\Internet Explorer\\iexplore.exe http://hato*******.ne.jp/jws/test.jnlp"); } catch (Exception ex) { ex.printStackTrace(); }

    • ベストアンサー
    • Java
  • Javaからのバッチ起動に関して

    現在ファイル整理用のプログラムを作っています。 その中でJavaのRuntimeクラスにおけるexecメソッドを使い move *ファイル名* 移動後ディレクトリ という内容のバッチファイルにテキストフィールドから取得したファイル名を渡し カットアンドペーストを行おうと思ったのですが、 この処理だとマッチする条件のファイル量が多いときに途中で何故か止まります。 バッチファイルの内容をコマンドプロンプトから実行するとちゃんと全てのファイル操作が終わるまで動くのですが、原因は何なのでしょうか? 一応、下にその処理をしている部分のコードを書いておきます。 private class ButtonAction implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("ファイル移動")) { String str=text.getText(); if(str.equals(""))System.out.println("入力してください"); else { Runtime rt=Runtime.getRuntime(); JFileChooser fc=new JFileChooser("D:/Video"); fc.addActionListener(new FileAction()); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fc.showOpenDialog(null); if(isok){ try{ rt.exec("C:\\Users\\yuki\\Desktop\\move.bat "+str+" "+path); }catch(Exception err) { err.printStackTrace(); } } } バッチファイルの中身 C: cd "C:\録画" move *%1* %2

    • ベストアンサー
    • Java
  • TOMCATのstartup.batによる起動とNTサービスによる起動の違い

    現在TOMCATをアプリケーションサーバとして開発を行っているものです。テスト環境ではTOMCATをstartup.batで起動してRuntime.getRuntime().exec(command)を使用して別アプリケーションを動かしていました。ですが、サービスより起動したところ、動作しなくなってしまいました。 startup.batとサービスからの起動では何か違いがあるのでしょうか。 なお、使用しているTOMCATのバージョンは4.1.29です。 ご存知のかた、いらっしゃいましたらよろしくお願いします。

  • ネットワーク上の他のパソコン内のjarを実行したい。

    ネットワーク上の他のパソコン内のjarを実行したい。 実行して他のパソコンの中で動かしたいですが、反応がありませんでした。 他のパソコン側のセキュリティ設定や、jarファイルへの設定が必要なのでしょうか。 また、他の方法で同じことはできませんでしょうか。 ご存知の方がおられましたら教えてください。 よろしくお願いいたします。 以下は、試したソースです。 import java.io.IOException; public class exec { public static void main(String[] args) { // ネットワーク上のjarを実行したい。 try { //Runtime.getRuntime().exec("cmd /c start //myPC/log/test.jar");//反応なし //Runtime.getRuntime().exec("cmd /c start //myPC/log/test.txt");//反応なし Runtime.getRuntime().exec("cmd /c start C:/log/test.jar");//実行できる Runtime.getRuntime().exec("cmd /c start C:/log/test.txt");//実行できる } catch (IOException e) { e.printStackTrace(); } } }

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

    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"; }

  • Runtimeメソッドの問題

    UserModeLinuxをプログラムで起動したいと考えています。 UserModeLinuxを起動するには端末から 「linux.uml ubd0=uml-root-hardy umid=uml1」 と入力するのですが、それをJavaのプログラムの中で行おうと以下のプログラムを作成しました。 import java.io.IOException; public class Control { public static void main(String[] args) throws IOException{ String emacs = "emacs hiroyasu.txt"; Runtime.getRuntime().exec(emacs); String start = "linux.uml ubd0=uml-root-hardy umid=uml1"; Runtime.getRuntime().exec(start); } } この際に、上のテストとして置いたhiroyasu.txtはきちんとemacsで起動するのですが、 下のUserModeLinuxの起動はエラーは出ないですが 起動をしません。 どのような問題が考えられますか? またできれば解決策まで教えていただけるとありがたいです。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう