0

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.

Nirmal
  • 1,229
  • 1
  • 15
  • 31

2 Answers2

0

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.

Community
  • 1
  • 1
Nirmal
  • 1,229
  • 1
  • 15
  • 31
0

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?.

Community
  • 1
  • 1
Y123
  • 915
  • 13
  • 30