2012-05-11 1 views
3

Я создал консольное приложение .NET, которое получает некоторые аргументы командной строки.Консольное приложение не корректно анализирует аргументы с пробелами

Когда я прохожу арг с пробелами, я использую кавычки, чтобы принять эти аргументы так, чтобы они не расщепляется CMD:

C:\MyAppDir> MyApp argument1 "argument 2" "the third argument" 

Если я выполнить приложение в Windows XP работает отлично: он получает 3 аргументы:

  • argument1
  • аргумент 2
  • третий аргумент

Однако, если я выполнить его в Windows Server 2008, кажется, игнорировать кавычки: он получает 6 аргументов:

  • argument1
  • "аргумент
  • 2"
  • «
  • в третьем
  • аргумент "

Любые идеи, почему?

ПРИМЕЧАНИЕ: Я напечатал аргументы только когда Main начинает выполнение с помощью этого кода:.

Console.WriteLine("Command line arguments:"); 
foreach (string arg in args) 
{ 
    Console.WriteLine("# " + arg); 
} 
+3

вы делаете какое-то разбор с аргументами? – animaonline

+0

Показать свой код. – abatishchev

+4

Вы, возможно, читаете \, который может ускользнуть от «?», Вы уверены, что персонаж, которого вы печатаете, действительно является двойной цитатой »? возможно, это персонаж, который выглядит так. Я знаю, что мои настройки в греческом языке создают «но это не так понятно». – ericosg

ответ

7

Убедитесь, что символ, который вы набираете, действительно двойные кавычки»

Может быть, это символ, который выглядит как это

Я знаю, что мои настройки на греческом языке создают «но это не так.

+0

написал ответ, чтобы вы могли убедиться, что вы его закрыли, а не просто комментарий. – ericosg

+0

Конечно, вот вам! :-) –

0

Просьба.

C: \ MyAppDir> MyApp argument1 \ "аргумент 2 \" \ "третий аргумент \"

Смежные вопросы