是否可以保留用作命令行参数的OS变量。
例如:Test.exe%Temp%
具有扩展的temp变量,而不是变量本身。
所以:
Console.WriteLine("Args:\n");
foreach (string cl in args)
{
Console.WriteLine(cl);
}
输出类似:
Args:
C:\Temp
我需要的是变量保持未展开状态:
Args:
%Temp%
答案 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#?
只是一个想法...