OS变量用作命令行参数

时间:2012-01-10 17:33:38

标签: c# environment-variables

是否可以保留用作命令行参数的OS变量。

例如:Test.exe%Temp%

具有扩展的temp变量,而不是变量本身。

所以:

  Console.WriteLine("Args:\n");
  foreach (string cl in args)
  {
    Console.WriteLine(cl);
  }

输出类似:

Args:

C:\Temp

我需要的是变量保持未展开状态:

Args:

%Temp%

2 个答案:

答案 0 :(得分:3)

你需要逃避这样的百分比:Test.exe ^%Temp^%。有了这个,你应该得到所需的输出。

答案 1 :(得分:0)

你有没有尝试过:

Test.exe "%Temp%"

这可能足以阻止操作系统扩展环境变量。

要么是这样,要么考虑是否确实需要传递特定于操作系统的环境变量名称形式。在不知道Test.exe的任何细节的情况下,您可以使用:

Test.exe Temp

然后在Test.exe中,您只需按名称检索环境变量即可。我认为这无论如何都会更符合惯例。

另外(再次,没有更多细节,很难说)在运行时传递环境变量的名称似乎很奇怪。变量的名称是动态的吗?你能否将环境变量的名称放到一个静态的名称中,以便Test.exe可以从名为“Test_exe_init”的一致命名变量中检索名称?

set Text_exe_init=Some_Dynamic_Variable_Name
Test.exe

在Text.exe中使用

string foo=GetEnvironmentVariable("Test_exe_init");

How do I get and set Environment variables in C#?

只是一个想法...