При выполнении командного файла из среды выполнения Java собственные команды DOS не запускаются - PullRequest
1 голос
/ 04 декабря 2009

Когда я запускаю командный файл непосредственно в DOS, все работает как положено. Но когда я выполняю командный файл из Java runTime, он запускает только команды, которые вызывают файлы JAR (то есть, вызывают JVM). Он не запускает любые собственные команды DOS.

Одна проблема в том, что у меня нет консоли, чтобы знать, почему это происходит. Мне интересно, если это проблема с разрешениями, но я понятия не имею. Кто-нибудь видел это раньше?

Используемый код Java выглядит примерно так:

Runtime.getRuntime (). Exec ("c: \ targetFolder \ myBatch.bat"); // (Отредактировано здесь для простоты.)


Пакетный файл выглядит примерно так (учитывая, что я упростил его):
myBatch.bat:

звони джаве myJar.jar бла-бла --- да
скопировать outputFile.out outputFile.bak --- NO
mkdir testDir --- NO
звони джава myJar.jar бла-бла --- да
позвоните someOther.bat --- НЕТ

Строки --- yes работают нормально, и я вижу ожидаемые результаты
--- строки не выполняются , а не , но я понятия не имею, почему бы и нет, потому что нет б / у консоли, чтобы сказать мне.

Спасибо за любую помощь !! Mike

Ответы [ 2 ]

4 голосов
/ 04 декабря 2009

Вы должны запустить командный процессор Windows (оболочку), передав ему командный файл в качестве аргумента.

Runtime.getRuntime().exec( "cmd.exe /C c:\\targetFolder\\myBatch.bat" );
0 голосов
/ 04 декабря 2009

Тот факт, что выполняются вторые вызовы Java, указывает на то, что все ваши строки NO все еще выполняются, но просто не отображают никакого вывода. Вы пытались включить эхо через

@ ECHO ON

в вашей первой строке?

Во-вторых, ваша проблема, вероятно, в неправильном рабочем каталоге. Укажите рабочий каталог вот так

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