开发者

When executing batch file from Java Runtime, native DOS commands fail to run

开发者 https://www.devze.com 2022-12-13 18:11 出处:网络
When I execute the batch file directly in DOS, everything runs as expected. But when I execute the batch file from Java runTime, it will run only the commands that invoke jar files (ie. invoke the JVM

When I execute the batch file directly in DOS, everything runs as expected. But when I execute the batch file from Java runTime, it will run only the commands that invoke jar files (ie. invoke the JVM). It does not run any native dos commands.

One problem is that I have no console to know why this is happening. I'm wondering if it's a permissions problem, but I have no idea. Anyone out there see this before?

The Java code used looks something like this:

Runtime.getRuntime().exec("c:\targetFolder\myBatch.bat"); // (Edited here for simplicity.)

The batch file looks something like this (noting that I开发者_StackOverflow社区've simplified it):

myBatch.bat:

call java myJar.jar blah blah --- yes

copy outputFile.out outputFile.bak --- NO

mkdir testDir --- NO

call java myJar.jar blah blah --- yes

call someOther.bat --- NO

The ---yes lines run fine and I see the expected results

The ---no lines do not run, but I have no idea why not b/c there is no console to tell me.

Thanks for any help!! Mike


You have to run the Windows command processor (the shell), giving it the batch file as an argument.

Runtime.getRuntime().exec( "cmd.exe /C c:\\targetFolder\\myBatch.bat" );


The fact that the second java calls executes indicates that all your NO lines are still executing, but just not displaying any output. Have you tried turning on echo on via

@ECHO ON

in your first line?

Secondly, your problem is probably the wrong working directory. Specify the working directory like so

Runtime.getRuntime().exec("c:\targetFolder\myBatch.bat",null,"c:\targetFolder"); 
0

精彩评论

暂无评论...
验证码 换一张
取 消