Запуск пакетного файла по Java - PullRequest
1 голос
/ 23 октября 2011

Я просто хотел запустить командный файл, используя код Java в Win7.Я могу запустить .exe файлы с кодом, но вы знаете, что он не работает с пакетом.В чем проблема?Вы знаете, что даже cmd.exe не запускается с этой командой.Но я могу запустить другие EXE-файлы, я пробовал некоторые.Код такой (с try и catch таков): ни один из них не сработал!

Runtime.getRuntime().exec("cmd.exe /c demo.bat");
Runtime.getRuntime().exec("demo.bat");

Я пытался работать с процессом, и я написал код ниже.

       java.lang.IllegalThreadStateException:process has not exited
        at java.lang.ProcessImpl.exitValue(Native Method)
        at Test.Asli.main(Asli.java:38)

это код:

           try{  
                Runtime rt = Runtime.getRuntime();
                Process proc= rt.exec("C:\\Windows\\System32\\cmd.exe"); 
                int b = proc.exitValue();
              //  int exitVal = proc.exitValue();
                //System.out.println("Process exitValue: " + exitVal);}
              }
              catch (Exception e) {
                // TODO: handle exception
                  e.printStackTrace();
            }

Ответы [ 3 ]

5 голосов
/ 23 октября 2011

Попробуйте следующее:

String[] cmd = {"cmd.exe", "/c", "demo.bat");
Runtime.getRuntime().exec(cmd);

Я всегда предпочитаю разделять команду и параметры самостоятельно.В противном случае это делается путем разделения на пространство, которое может оказаться не тем, что вы хотите.

1 голос
/ 23 октября 2011

Попробуйте это:

Runtime.getRuntime().exec("cmd.exe /c start demo.bat");
0 голосов
/ 14 августа 2013

Используйте это:

 try {
 Process p = Runtime.getRuntime().exec("C:PATH/TO/FILE/yourbatchfile.bat");
 } catch(Exception e) {
     e.printStackTrace();
 }

Он даже скрывает раздражающее окно с подсказкой (если вы этого хотите)

...