2015-01-09 1 views
2

У меня есть пакетный файл, сохраненный на моем рабочем столе, и он служит для открытия калькулятора при его исполнении. Я хочу, чтобы этот командный файл функционировал совершенно так же, используя java. я написал следующую команду в NetBeansКак получить пакетный файл, запущенный с помощью java

package runbatch; 

import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 


public class Runbatch { 

    public static void main(String[] args) { 
     try { 
      Runtime.getRuntime().exec("cmd /c hello.bat"); 
     } catch (IOException ex) { 
      Logger.getLogger(Runbatch.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

} 

хотя я получить сборку, чтобы быть успешным я не получаю калькулятор открывал.

ответ

1

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

Runtime.getRuntime().exec("cmd /c start calculator.bat"); 

Или вы можете выполнить свою программу без прохождения через пакетный файл, например так:

Runtime.getRuntime().exec("cmd /c start java NameOfJavaFile"); 
0

Добавить «запустить» аргумент и полный путь пакетного файла: Runtime.getRuntime(). Exec ("cmd/c start D: \ sandbox \ src \ runbatch \ hello.bat"); Это работает для меня.

0

Я предпочитаю что-то вроде этого:

String pathToExecutable = "C:/Program Files/calculator.exe"; 

try 
{ 
    final List<String> processBuilderCommand = new ArrayList<String>(); 
    // Here you can add other commands too eg a bat or other exe 
    processBuilderCommand.add(pathToExecutable); 

    final ProcessBuilder processbuilder = new ProcessBuilder(processBuilderCommand); 
    // Here you be able to add some additional infos to the process, some variables 
    final Map<String, String> environment = processbuilder.environment(); 
    environment.put("AUTOBATCHNOPROGRESS", "no"); 

    processbuilder.inheritIO(); 
    final Process start = processbuilder.start(); 

    start.waitFor(); 
} 
catch (IOException | InterruptedException e) 
{ 
    LOGGER.error(e.getLocalizedMessage(), e); 
} 

я думаю, что это немного Flexibel то другие, потому что вы можете добавить несколько и более один execuable унд вы сможете добавлять переменные.

0

ProcessBuilder является безопасным и правильный способ сделать это в Java:

String[] command = new String[]{"cmd", "/c" ,"hello.bat"}; 
ProcessBuilder processBuilder = new ProcessBuilder(); 
processBuilder.command(command); 
processBuilder.start(); 
Смежные вопросы