繁体   English   中英

在javascript中设置环境变量

[英]Setting an environment variable in javascript

如何在WSH jscript文件中设置一个调用另一个程序的环境变量? 这是减少的测试用例:

envtest.js
----------
var oShell = WScript.CreateObject("WScript.Shell");
var oSysEnv = oShell.Environment("SYSTEM");
oSysEnv("TEST_ENV_VAR") = "TEST_VALUE";
oExec = oShell.Run("envtest.bat", 1, true);    

envtest.bat
-----------
set
pause

我希望在变量列表中看到TEST_ ENV _VAR,但它不存在。 怎么了?

编辑:

如果有人可以生成工作代码示例,我会将其标记为正确答案。 :)

问题不在您的代码中,而是在执行过程中。 将完整的系统变量分配给执行的过程。 所以,你的子进程也有相同的变量集。

您的代码示例效果很好。 它将变量添加到SYSTEM环境中。

因此,您不仅需要为系统设置变量,还需要为流程设置变量。

这是代码。

var oShell = WScript.CreateObject("WScript.Shell");
var oSysEnv = oShell.Environment("SYSTEM");
oSysEnv("TEST1") = "TEST_VALUE";
var oSysEnv = oShell.Environment("PROCESS");
oSysEnv("TEST1") = "TEST_VALUE";
oExec = oShell.Run("envtest.bat", 1, true);  

一旦创建了系统变量。

它将为当前进程分配新创建的变量。 因此,您的子进程可以在执行“SET”命令时获取该变量。

对不起,我的英语不好。

如果您只需要子进程来查看变量,那么您可能需要4个“集合”(系统,用户,易失性和进程)进程

您正在获取系统环境变量。 我怀疑你根本没有权限修改它们; 您可以尝试将其更改为用户环境变量。

另外我不知道Environment()的参数是否区分大小写。 MS的文档使用"System"而不是"SYSTEM" 可能会有所作为,但我不确定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM