2015-01-09 25 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 UND您可以添加變量。

0

的ProcessBuilder是在Java中這樣做的安全和正確的方式:

String[] command = new String[]{"cmd", "/c" ,"hello.bat"}; 
ProcessBuilder processBuilder = new ProcessBuilder(); 
processBuilder.command(command); 
processBuilder.start();