[英]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.