2016-02-12 47 views
0

我在写一个调用另一个批处理文件的批处理文件。 外部批次是我的,内部不是。如何不从一个调用的批处理文件中退出

外部一批从Java应用程序调用:

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

在封闭式从外部批量叫做:

call C:\anotherBatch.bat <fileWithCommandsForBatch 
pause 

的问题是,在封闭式完成外部批次完成时。 我希望用户仍然能够在内部批处理上运行自己的命令。

如果我手动从cmd运行“fileWithCommandsForBatch”命令, 内部批处理仍然存在。

如何在外部批次完成作业后保持内部批处理活动?

+0

你可以编辑你的问题,以显示你调用两个批次的不同方式,以及它在每种情况下的作用。我无法遵循你的描述。 – CoveGeek

+0

感谢您的回复。我添加了更多关于外部批次和内部批次的信息。如果您需要更多信息,请告诉我。 – Benefits

+0

所以问题是由于重定向到批处理文件?你可以改变anotherBatch.bat以fileWithCommandsForBatch作为参数并读取该文件的内容吗?您可能需要阅读Java如何通过'Runtime.exec()处理stdin和stdout“ –

回答

1

如果您只希望用户能够通过在命令窗口内手动键入来附加到fileWithCommandsForBatch的标准输入,请参见"Prepend to stdin"。 (Java程序将不参与。)在你的外部批次,你可能会得到这样的

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

我想,这一定程度上取决于称为anotherBatch.bat如果重定向按预期正常运行代码(特别是输入线逐行不是单击键)。请注意,more需要用户输入行,所以原始脚本的pause被忽略。如果不通过调用anotherBatch.bat进行处理,用户可以通过发送EOF(通过在命令窗口中键入F6或Control-Z)来终止输入。

相关问题