Переменные ОС, используемые в качестве аргументов командной строки - PullRequest
0 голосов
/ 10 января 2012

Можно ли сохранить переменные ОС, используемые в качестве аргументов командной строки.

Например: Test.exe% Temp%

имеет расширенную временную переменную, а не саму переменную.

Итак:

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

Выводит что-то вроде:

Args:

C:\Temp

Мне нужно, чтобы переменная оставалась неразделенной:

Args:

%Temp%

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Вам нужно экранировать проценты вроде этого: Test.exe ^%Temp^%. При этом вы должны получить желаемый результат.

0 голосов
/ 10 января 2012

Вы пробовали:

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");

Как получить и установить переменные окружения в C #?

Просто мысль ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...