是否可以在 windows 下运行批处理文件,就好像它是从运行 java 实例的同一个 shell 运行一样(而不是在新的控制台实例中)?
我想运行一个由第三方提供的批处理文件,并有条件地设置了一堆环境变量,我宁愿不必翻译成 Java,但 Java 应用程序中的某些东西需要它才能工作.
我知道另一种方法是在运行 Jar 之前在命令提示符下手动运行批处理文件以获得相同的效果,但在这种情况下,需要大量输入或大量自定义批处理文件。
是否可以在 windows 下运行批处理文件,就好像它是从运行 java 实例的同一个 shell 运行一样(而不是在新的控制台实例中)?
我想运行一个由第三方提供的批处理文件,并有条件地设置了一堆环境变量,我宁愿不必翻译成 Java,但 Java 应用程序中的某些东西需要它才能工作.
我知道另一种方法是在运行 Jar 之前在命令提示符下手动运行批处理文件以获得相同的效果,但在这种情况下,需要大量输入或大量自定义批处理文件。
简短的回答:没有。
当您声明“从运行 java 实例的同一 shell 运行”时,您似乎暗示 shell 和 java 在某个公共/共享级别共存。相反,它们的关系是分层的:shell 是父进程,它启动 java 作为子进程。
进程(例如批处理)对环境所做的任何更改是:
批处理文件从命令提示符执行时会导致当前环境立即更改的原因是命令 shell (cmd.exe) 旨在“就地”处理批处理文件 - 无需启动新进程 [在 unix 下, shell会“获取”一个脚本文件来做同样的事情]。
Java,不是“cmd.exe”,不会这样做。正如您所指出的,从 java 运行批处理文件将创建一个新的命令处理器作为子进程,它在完成时对 java 环境没有影响。
选项包括: