• 締切済み

Runtime.getRuntime().exec("cmd /c start run.bat");でコマンドプロンプトが出ないようにしたい

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

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

みんなの回答

  • luckymako
  • ベストアンサー率55% (29/52)
回答No.2

バッチファイルに書いてあることを Runtime.getRuntime().exec() を使って直に実行するのではだめなのですか?

tomoyanya
質問者

お礼

みなさま、ありがとうございました。

tomoyanya
質問者

補足

はい。そういう場合を想定しています。

回答No.1

直接な回答じゃないけど、 そのbatへのショートカット作って、 そのショートカットの設定で実行時の大きさを最小にして、 そのショートカットをJavaから実行するというのはどうでしょうか? もしくは、ウィンドウの位置をディスプレイ外になるようにするとか。

tomoyanya
質問者

補足

今はvbs(WSH)を書いて実行しています。 batなら書ける人がチームに多いため移行を考えています。 直接的な方法があれば知りたいと思っています。

関連するQ&A

  • exec を使ってcmdを動かす

    現在、javaのexec関数を使ってcmdを実行したいのですが、うまく動作しなくて困っています。 ソースコードで説明すると、 try { Runtime r = Runtime.getRuntime(); Process p=       r.exec(newString[{"cmd.exe","/k","del","a.txt"}); } catch { } この様なソースでcmdを立ち上げて、a.txtというファイルを消去したいのですが、このプログラムを実際に動かすとa.txtはきえず、またcmdの画面も表示されません。 しかし、エラーは表示されずまたcmd.exeをnotpad.exeに変更するとちゃんとnotpadが立ち上がります。 どのあたりのソースがおかしいのでしょうか?ご指摘お待ちしております。

    • ベストアンサー
    • Java
  • Runtime.execについての質問

    こんにちは、Makotoと申します。 Runtime.execを使って、ディレクトリを作成する プログラムを作っているのですが、下記のプログラムで ディレクトリは作成されるのですが、コマンドプロンプト画面が 立ち上がったままになってしまいます。閉じようと思い、8行目でexitコマンド を発行してみたのですが、うまくいきませんでした。このウィンドウを閉じる 方法はあるのでしょうか? 1:public class test{ 2:  public static void main(String[] args) throws Exception { 3:    Runtime rt = Runtime.getRuntime(); 4:    Process pr; 5:    try { 6:      Process proc1 = rt.exec("cmd /C start /MIN 7:               mkdir c:\\\poi\\test"); 8:      proc1 = rt.exec("command.com, /, exit"); 9:    } catch (java.io.IOException e) { 10:     System.err.println(e); 11:     System.exit(1); 12:    } 13: 14: } 15:}

    • ベストアンサー
    • Java
  • execでdirコマンドを実行すると停止します

    質問です。 javaのプログラム内で command = "cmd /c dir *.java /a-d"; r = Runtime.getRuntime(); p = r.exec(command); p.waitFor(); p.destroy(); こう書くと問題なく進行するのですが command = "cmd /c dir *.java /a-d/s"; r = Runtime.getRuntime(); p = r.exec(command); p.waitFor(); p.destroy(); のように/sオプション(サブディレクトリ内も検索する)を付けると p.waitfor(); 部分で動作が停止します。 ファイルの探索に時間がかかっているとかではなく、完全に動作が停止しているようなのですが原因がわかりません どなたかよろしくお願いします。

    • ベストアンサー
    • Java
  • Runtime.exec()について

    Runtime.exec()について質問させて下さい。 現在、Windowsのサーブレット上のファイル操作で ファイルの属性ごと(読み取り専用)コピーしたいので Runtime.exec()からxcopyコマンドを呼び出してコピーしています。 (JavaのAPIでは属性ごとコピー、属性変更ができない!?ため) エディタはeclipse3.5を使用しております。 eclipse上のTomcat6.0では綺麗にコピーしてくれるのですが、 Tomcat6.0のみでの実行ではコピーできません(0個のファイルをコピー) eclipse3.5上のTomcat設定とTomcat自体のJVM設定でのJREパスは同じJRE を参照しています。常にEclipseを起動させた状態!!ってのは厳しいので なんとかTomcatのみでコピーを成功させたいので助言お願いいたします。 下記ソースで 4個の読み取り属性を強制上書きコピーしますと、表示は Eclipse3.5上では → 「4個のファイルコピーに成功」表示 Tomcat6上では   → 「0個のファイルコピーに成功」表示 となります。。。 【以下ソース】 CopyFrom = "コピー元パス"; CopyTo  = "コピー先パス"; try{  String[] cmd = new String[]{"cmd","/c","xcopy",CopyFrom+"*.*",CopyTo,"/y","/r","/k","/h"};  Runtime Run = Runtime.getRuntime();  Process process = Run.exec(cmd);  //実行結果取得  InputStream is = process.getInputStream();  BufferedReader br = new BufferedReader(new InputStreamReader(is));  String Line = null;  while((Line = br.readLine()) != null){   System.out.println(Line);  } }catch(IOException e){  System.out.println(e); } 【環境】 ・Windows Server2003 ・Java1.6.0_13(パスは通しています) ・Tomcat6.0.14

    • ベストアンサー
    • Java
  • Runtime.getRuntime().execの使い方

    Javaプログラムを実行するだけで、コマンドプロンプトを起動させ、 Mecabを動かしています。 try { String[] command = new String[8];  command[0] = "cmd.exe";  command[1] = "/c";  command[2] = "C:\\Program Files\\mecab\\bin\\mecab.exe";  command[3] = "-F";  command[4] = "\"%m,%f[0]\"";  command[5] = "result.txt";  command[6] = ">";  command[7] = "output.txt";  process = Runtime.getRuntime().exec(command);  以下省略 上のようにすると、output.txtにうまく出力してくれません。 ちなみに、  command[3] = "-F";  command[4] = "\"%m,%f[0]\""; の部分を省くとうまくoutput.txtに書き込まれます。 出力フォーマットを指定する方法はありますでしょうか。 またMecab単体を起動させて mecab -F "%m,%f[0]" result.txt > output.txt …(1) (1)のように入力するとうまくいきます。 Javaプログラムで(1)を実行させたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • コマンドプロンプトからのcmd実行について

    現在VBSでオブジェクトを定義しrunを使いcmd経由で他のバッチ・VBS・ソフトの起動をやっています。 ふととあるパスが実行できませんでした。 そこで別途個別にコマンドプロンプトだけで実行してみましたがやはりうまく処理できません。 [echo.bat] echo test pause [コマンドプロンプト] rem その1 cmd /K c:\temp\a\echo.bat rem その2 cmd /K C:\Temp\(a\echo.bat その1の結果 C:>cmd /K C:\Temp\a\echo.bat C:>echo test test C:>pause 続行するには何かキーを押してください . . . その2の結果 C:>cmd /K C:\Temp\(a\echo.bat 'C:\Temp\' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:> 上記のように1は正常に処理され2はうまく処理されません。 解決策をひたすら検索したのですが見つからず なんとなくだいたい分かったのが一部『(』や『)』や『&』や『@』や『^』などの記号が混じるとどうやらうまく処理できないようです。 なぜ処理できないのか?と、如何すればこれを回避して実行できるか分かる方がいればよろしくお願いします。 備考: (現状の緊急回避として記号のあるパスは記号のないパスから経由batを生成する方法を思いつきましたが自分で馬鹿だと思います) (経由バッチの中身が"C:\Temp\(a\echo.bat"ならば実行できるから) また、cmd /K "C:\Temp\(a\echo.bat" では実行できませんでした。 OSはXPです。コマンドプロンプトヴァージョンは(Microsoft Windows XP [Version 5.1.2600])です

  • ネットワーク上の他のパソコン内の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
  • Runtime クラスのexecメソッドについて

    javaで、Runtimeのexec()メソッドを使って、出てきた内容をJTextAreaに出力したいと思っています。つまり、JTextAreaをコマンドプロンプト風にしたいと思っています。しかし、exec()メソッドの戻り値である、Processクラスがいまいちよくわかりません。仕様書(日本語訳)を読んでもProcessクラスのgetInputStream()メソッドやgetOutputStream()メソッドの説明がいまいちピンときません。 try{ Process process = Runtime.getRuntime().exec("hogehoge"); /*---------------------------------------------------------*/ ここで、いかにしてJTextAreaに出力するのかわかりません /*---------------------------------------------------------*/ }catch(Exception e){ } どうか、わかる方よろしくお願いします。

    • ベストアンサー
    • 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
  • javaでhtmlファイルを開く方法

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

    • ベストアンサー
    • Java