【问题标题】:set local dos variables from java code从java代码设置本地dos变量
【发布时间】:2011-06-08 09:19:47
【问题描述】:

如果从命令行运行“java -jar”, 有没有办法从java程序设置本地dos变量,这样 java退出后,还能在同一个会话中出现吗?

例子

(cmd)
c:\java package.Class 

/*then in program you do something like 
'System.setVariable("name","value");'
*/

// java exited

echo %name%

value

【问题讨论】:

标签: java batch-file dos windows-console


【解决方案1】:

没有。进程不能修改其父环境。

你能做的最好的事情就是稍微作弊,然后做以下事情之一:

  • 让 Java 程序在某个已知位置写出一个批处理文件,然后调用它来设置变量。由于批处理文件在当前cmd 进程中运行,它们可以在那里更改环境变量。
  • 让程序输出名称/值对或完成set 命令,然后捕获输出并自行设置变量。我猜只要你想要或有其他输出就会出错。

【讨论】:

    【解决方案2】:

    可以根据question 2121795 设置环境 变量。但是,我从未尝试过这些方法,因此无法验证它们是否有效。

    如果它们确实有效,请记住设置环境变量不会在当前会话中生效(您需要重新启动 cmd 窗口)。

    【讨论】:

      【解决方案3】:

      this question 也很有趣,它提供了解释如何使用 Preferences API 修改注册表的答案。我想你应该能够通过这条路线修改环境变量(没有仔细检查)。

      【讨论】:

      • 出于显而易见的原因,它们不会被正在运行的进程拾取。
      • @Joey:OP 的要求是在 Java 程序退出后仍然设置环境变量,并没有明确说明它们应该从正在运行的 Java 程序中可见。
      • 从启动 Java 程序的进程中看不到它们(我将他的 »same session« 解释为)。
      • 也许,我不能 100% 确定他们不是,但这可能只是我缺乏知识 (-:
      猜你喜欢
      • 2012-06-29
      • 1970-01-01
      • 2014-09-20
      • 2023-04-06
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多