• ベストアンサー

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
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
回答No.2

たとえば、直下のhoge.bat を起動するJavaプログラムは、、、 import java.io.IOException; public class Cmd1 { public static void main(String args[]) throws IOException { String cmd = "cmd.exe /c start hoge.bat"; Runtime.getRuntime().exec(cmd); } }

jinna1515
質問者

お礼

回答ありがとうございます。 正常にバッチファイルを実行することが出来ました! > String cmd = "cmd.exe /c start hoge.bat"; このような記述をすればいいのですね。もっと調べて勉強します。 お助け頂き、ありがとうございました。

その他の回答 (1)

noname#49664
noname#49664
回答No.1

String[] cmd = {"cmd","/c","バッチファイルのパス"}; ではどうでしょうか。バッチファイルは、cmd.exeを実行して起動するはずですので。

jinna1515
質問者

お礼

回答ありがとうございます。 試してみましたが、やはりバッチファイルの実行が出来ていないようです。C-cで抜けるまでコマンドプロンプトが入力待ちの様な状態になってしまいます。 教えて頂いた記述の仕方も調べてはいるのですが、理解が不足していたようです。参考URL等ありましたらお願いできませんでしょうか。 引き続きよろしくお願いします。

関連するQ&A

  • JAVAで外部ファイルの実行

    JAVAで外部ファイルを実行したいのですが、 myjbutton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ Runtime myruntime=Runtime.getRuntime(); try{Process myprocess=myruntime.exec("cmd.exe");}catch(IOException e){}; }}); ボタンを押して、実行させたいのですが、これが 全く起動しません。notepad.exeなども試しました が無理でした。 アドバイスがあれば、教えてください。お願いします。

    • ベストアンサー
    • Java
  • 外部コマンドを実行する方法

    sdk 1.4.2_08 OS WindowsXp try{ Process process = Runtime.getRuntime().exec(...); }catch(IOException e){} を使用して,コマンドを実行しようとしています.しかし,IOExceptionとなってしまいます. exec(...) に記述してある内容をコピーして,コマンドラインから実行できることは確認しましたし,パスも大丈夫でした. また空白が認識されない場合があることから, String cmd[] = {"コマンド","引数1","引数2"}; Process process = Runtime.getRuntime().exec(cmd); と行ってもダメでした. また,ためしにこのコンパイル済みのclassファイルをLinuxで動作させたところ,正常の動作できることがが確認できました.(windowsとLinuxに同じ名前のコマンドがあるのです.また,Linuxは fedora core4 です.) Windows上のコマンドに問題があるようなのですが,何か原因となる要因が,他にもありそうでしたらアドバイスお願いいたします.

    • ベストアンサー
    • Java
  • ネットワーク上の他のパソコン内の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
  • JAVAとGnuplot

    javaからGnuplotを起動させ、グラフのプロットを行いたいのですがうまくいきません。 ソースは String gnuplot_cmd = "plot sin(x)" ; try { p = Runtime.getRuntime().exec("C:~省略~\\wgnuplot.exe"); } catch (IOException e) { e.printStackTrace(); } pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(p.getOutputStream()))); pw.print(gnuplot_cmd); pw.close(); です。 起動はするのですが、プロットの命令がうまく伝わりません。 よろしくお願いします。

    • ベストアンサー
    • 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
  • バッチ起動したいのですが…

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

  • javaでhtmlファイルを開く方法

    通常は、下記のような記述をすれば、html.htmlファイルを開けると思うのですが開けせん。どうすれば、開くことができますか? また、ディスクトップで実行しているのですが、Javaファイルと同じディレクトリ(デスクトップ)にあるhtml.htmlファイルを開くことはできないのしょうか? 相対パスで記述するとエラーになります。 初歩的な質問かもしれませんが、ご教示、宜しくお願い致します。 String[] cmd = {"C:\\html.html"}; Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(cmd);

    • ベストアンサー
    • 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
  • 外部コマンドの実行について

    ・Actionクラス public ActionForward Batch(     ActionMapping objActMapping,     ActionForm objActFrm,     HttpServletRequest objHttpRequest,     HttpServletResponse objHttpResponse)     throws Exception {         ActionForward objActFwd = null;         TestForm objTestForm = null;         try {             Runtime runtime = Runtime.getRuntime();             Process process = runtime.exec("c:/Batch/Batch.bat");             objActFwd = objActMapping.findForward("success");           }           catch (Exception e) {             e.printStackTrace();             throw e;           }         return objActFwd; } 以上のActionクラスをJSPからStrutusを介し実行しておりますが バッチファイルが実行されません。 batch.bat単体では実行可能です。 ご教授お願いいたします。 環境:WindowsXP j2sdk1.4.1 Jboss-3.2.3

    • ベストアンサー
    • Java
  • 既定のテキストエディタで開く, lnkファイルを実行する

    (1) Runtime.getRuntime().exec("C:/test.txt"); (2) Runtime.getRuntime().exec("C:/Documents and Settings/User/デスクトップ/メモ帳.lnk"); 当然ながら上記のコードは、IOException(Cannot run program)を送出しますが、 何をしたいか、その気持ちは伝わるのではないかと思います。 (1)では、OS既定のテキストエディタを使って、testファイルを開きたい。 (2)では、リンク先のnotepad.exeアプリを実行した。 ということなのですが、これを実現する方法をご教授ください。 実行環境は、WindowsXPを想定していますが、Javaですので可能ならば H/W,OSに依存しない方法があれば最善です。

    • ベストアンサー
    • Java

専門家に質問してみよう