是否可以在windows下运行批处理文件,就好像它是从运行java实例的相同shell运行的(而不是in a new console instance)?在运行环境中运行批处理文件
有,我要运行由第三方提供的批处理文件,并设置了一堆的环境变量的条件,我宁愿不有翻译成Java,但需要对某些事情在Java应用程序中工作。
我知道替代方法是在运行Jar获得相同效果之前,在命令提示符下手动运行批处理文件,但在这种情况下,需要大量的输入或大量的自定义批处理文件。
是否可以在windows下运行批处理文件,就好像它是从运行java实例的相同shell运行的(而不是in a new console instance)?在运行环境中运行批处理文件
有,我要运行由第三方提供的批处理文件,并设置了一堆的环境变量的条件,我宁愿不有翻译成Java,但需要对某些事情在Java应用程序中工作。
我知道替代方法是在运行Jar获得相同效果之前,在命令提示符下手动运行批处理文件,但在这种情况下,需要大量的输入或大量的自定义批处理文件。
简答:没有。
当您声明“从运行java实例的同一个shell运行”时,您似乎认为java的shell在某些公共/共享级别共存。相反,他们的关系是分层的:shell是一个父进程,它将java作为子进程启动。
一个进程进行任何更改(如批生产过程)对环境有:
批处理文件从命令提示符执行时,会立即更改当前环境的原因是命令外壳程序(cmd.exe)设计为“就地”处理批处理文件 - 无需启动新进程[在unix下,shell会“提供”一个脚本文件来做同样的事情]。
Java不是“cmd.exe”,不会执行此操作。正如你所说的,从java运行一个批处理文件将创建一个新的命令处理器作为子进程,完成后对java环境没有影响。
选项包括:
我很害怕这个。我必须找出最佳的行动方案。谢谢! – Qix
在新的控制台窗口中运行有什么问题? –
@defaultlocale语句像'set PATH =%PATH%; foo'只适用于新实例,而不是java实例。 – Qix