我使用以下命令在c#控制台应用程序中为环境变量设置一个值。
System.Environment.SetEnvironmentVariable(envvar, result,EnvironmentVariableTarget.Process);
在命令窗口中运行应用程序后,当我尝试回显该变量时,我看不到该值。 我必须在批处理文件中使用此应用程序。 我想要像SET命令这样的功能。请帮忙..
修改 我尝试使用System.Environment.SetEnvironmentVariable(envvar,result,EnvironmentVariableTarget.user)并传播我尝试过这个Propagating Change in Env VAr的更改。但我不能在同一个命令窗口中回显该变量。
让我重新解释一下这个问题: 我想在c#中为Env Var设置一个值。我必须能够在同一个命令窗口中使用该变量(即我不应该打开一个新的cmd窗口来查看更改)。我们使用SET命令,我们可以立即使用该变量.. rt?我想要这样的功能。 Plzz帮助
答案 0 :(得分:2)
当您使用EnvironmentVariableTarget.Process时,变量集仅在当前流程中可见,如您在此示例中所示:
System.Environment.SetEnvironmentVariable("myVar", "myValue", EnvironmentVariableTarget.Process);
string s = System.Environment.GetEnvironmentVariable("myVar",EnvironmentVariableTarget.Process);
myVar上方将显示s =“myValue”,但在命令窗口中不可见。
如果要在命令窗口中设置值可见,则需要使用EnvironmentVariableTarget.User:
System.Environment.SetEnvironmentVariable("myVar", "myValue", EnvironmentVariableTarget.User);
这样设置myVar = myValue将被存储,然后你可以在命令窗口看到。
详细示例位于here
答案 1 :(得分:1)
为了查看当前批处理过程中的env。您必须在程序中以字符串形式输出它并解析它并在批处理文件中调用set。
或者您可以尝试使用EnvironmentVariableTarget.User。使用此选项设置时,env将在所有新进程中可见。