问题
I want to run a batch file using a java program, when I double click the .bat file it asks me to enter 'D' and after that it creates some folders in C drive, below is the contents of the .bat file:
xcopy "data" "C:\data" /S
xcopy "rapid" "C:\rapid" /S
subst x: /D
subst x: C:\
My Java code is as below:
try {
//C:\Desktop\Speed\view_R36_WD_Release\RAPID\switchToLive.Bat
String cmds[] = {"C:\\Users\\608521747\\Desktop\\Speed\\view_R36_WD_Release\\RAPID\\switchToDev.bat"};
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(cmds);
process.getOutputStream().close();
InputStream inputStream = process.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputStream);
BufferedReader bufferedrReader = new BufferedReader(inputstreamreader);
String strLine = "";
while ((strLine = bufferedrReader.readLine()) != null) {
System.out.println(strLine);
}
} catch (IOException ioException) {
ioException.printStackTrace();
}
its not giving me any errors but it neither ask me to enter any value nor it creates any folder.
I want to know what do I need to do in java code so that it will ask me to enter the 'D' and then the .bat file should continue in a normal flow.
Any help is appreciated.
回答1:
Your code needs to specify which program to execute your .bat file with. Start narrowing down with the following fix.
p = run.exec("cmd.exe /c " + cmds);
Also try this link for similar code for similar question previously answered here.
回答2:
Batch files are not executable files. So you will need to run cmd.exe and pass the batch file as parameter.
Please refer to this post - it addresses the same issue and provides a good solution - How do I run a batch file from my Java Application?.
来源:https://stackoverflow.com/questions/29372433/how-to-run-a-batch-file-using-java