1

我正在创建一个 Azure PaaS 角色,它为 java.exe 设置 PATH 变量。我有一个后台任务可以做到这一点。

startupApp.cmd 看起来像

    setx PATH %PATH%;%CD%\jdk\bin\  /m
    cscript /NoLogo util\unzip.vbs jdk.zip "%CD%"

Call the bat file to start my application. 

当 VM 启动时,我看到 PATH 环境变量已正确设置并指向 jdk\bin 文件夹的位置。但是,我的应用程序无法以错误“java 未被识别为内部或外部批处理命令”启动。

启动我的应用程序的 JAVA 命令是

java %JAVA_OPTS% %LOG_OPTS% %LOG4J_OPTS% -cp my_app.jar %MAIN_CLASS%

这是令人困惑的路径,

  1. 在我登录到 VM 并打开命令提示符窗口并键入 java 后,我发现它工作正常。
  2. 如果我重新启动 VM,启动我的应用程序的 java 命令运行良好,我和我的应用程序也可以正常启动。
4

1 回答 1

3

setx 和 set 函数有一个显着的区别:

  • set在本地cmd 上下文中生效。这意味着一旦退出或关闭 cmd 窗口,就会丢失环境变量。

  • setx在未来的cmd 上下文中生效。因此,您不会在当前 cmd 中看到环境变量及其值。 您需要打开一个新的 cmd 窗口才能看到它。

如果你想全局和立即使用它,你应该并排使用这两个函数。

描述取自:http ://batcheero.blogspot.de/2008/02/set-and-setx.html

于 2013-05-28T07:42:35.470 回答