2016-02-12 3 views
0

Я пишу командный файл, который вызывает другой пакетный файл. Внешняя партия - моя, внутренняя - нет.Как не выйти из вызываемого пакетного файла

Внешняя партия вызывается из приложения Java:

Runtime.getRuntime().exec("cmd /c start " + batchFileName, null, new File(batchFileDir)); 

Внутренняя партия вызывается из внешнего пакета:

call C:\anotherBatch.bat <fileWithCommandsForBatch 
pause 

Проблема заключается в том, что внутренние партии заканчивается, когда внешние партии отделки , Я хочу, чтобы пользователь по-прежнему мог выполнять собственные команды во внутренней партии.

Если я запускаю те же команды «fileWithCommandsForBatch» вручную из cmd, , внутренняя партия все еще жива.

Как сохранить внутреннюю партию после завершения внешней партии?

+0

Можете ли вы изменить свой вопрос, чтобы показать различные способы, которыми вы называете обе партии, и то, что он делает в каждом случае. У меня возникают трудности с описанием вашего описания. – CoveGeek

+0

Спасибо за ответ. Я добавил дополнительную информацию о внешней и внутренней партии. Скажите, пожалуйста, если вам нужна дополнительная информация. – Benefits

+0

Итак, проблема связана с перенаправлением в командный файл? Можете ли вы изменить anotherBatch.bat, чтобы взять файлWithCommandsForBatch в качестве параметра и прочитать содержимое этого файла? Возможно, вам придется прочитать, как Java обрабатывает stdin и stdout с помощью 'Runtime.exec()' –

ответ

1

Если вы хотите, чтобы пользователи могли добавлять к стандартным вводам от fileWithCommandsForBatch, вручную введя их в командном окне, см. "Prepend to stdin". (Ваша программа Java не будет участвовать.) В своем внешнем пакете, вы можете получить код, как

(
type fileWithCommandsForBatch 
more 
) | call C:\anotherBatch.bat 

Я думаю, это несколько зависит от вызываемой anotherBatch.bat если Перенаправление работает по назначению (в частности, ввод строки в каждом конкретном строка не одиночные нажатия клавиш). Обратите внимание, что more ожидает, что пользователи набирают строки, поэтому pause вашего исходного сценария опущен. Если не обрабатывается вызванным anotherBatch.bat, пользователи могут завершить ввод, отправив EOF (путем ввода F6 или Control-Z в командном окне).

Смежные вопросы