Невозможно правильно получить аргументы командной строки в C # - PullRequest
3 голосов
/ 27 апреля 2009

В c # .Net я не могу правильно получить аргумент командной строки. Это имеет проблемы в случае, если я даю команду как:

myProgram.exe "c:\inputfolder\" "d:\output.txt"

из-за символа обратной косой черты (который, я думаю, действует как escape-символ) в массиве args [], я получаю только один аргумент вместо двух Это работает нормально, если я дал без обратной косой черты:

myProgram.exe "c:\inputfolder" "d:\output.txt"

или без двойных кавычек:

myProgram.exe c:\inputfolder\ "d:\output.txt"

Ответы [ 4 ]

5 голосов
/ 27 апреля 2009

Я никогда не сталкивался с такой проблемой, но в случае, если вам нравится анализировать командную строку самостоятельно, используйте System.Environment.CommandLine, чтобы получить ее.

4 голосов
/ 27 апреля 2009

Обратная косая черта экранирует символ кавычки в оболочке. Вы должны использовать дополнительную обратную косую черту:

myProgram.exe "c:\inputfolder\\" "d:\output.txt"

Вы можете использовать следующую короткую программу для проверки парсинга командной строки:

using System;

class Program
{
    static void Main(string[] args)
    {
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine(string.Format("Argument {0}: {1}", i, args[i]));
        }
    }
}
4 голосов
/ 27 апреля 2009

Это хорошо известная проблема с синтаксическим анализом, и вы ничего не можете с этим поделать, кроме как получить всю командную строку в виде одной строки и проанализировать ее самостоятельно.

0 голосов
/ 19 июля 2011

В случае, если кто-то еще пытается найти официальную документацию по двойным кавычкам в аргументах командной строки, самое близкое, что я мог найти, было для c ++, и, похоже, это непосредственно применимо: http://msdn.microsoft.com/en-us/library/17w5ykft.aspx

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