Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Аргументы командой строки: ошибка из-за экранирования \"

9.7K
16 февраля 2012 года
Vitamant
228 / / 07.02.2011
Доброго времени суток!

Впервые столкнулся с подобной проблемой, а потому стражду помощи. Быть может, кто-нибудь с этим сталкивался и подскажет что делать...
Ситуация следующая: на вход программе подаются пути к двум каталогам. По всем правилам, эти пути заключаются в кавычки. Однако, в конце пути может оказаться слэш \. И в этом случае, и он и кавычка бесследно исчезают, в результате кусок пути второй папки цепляется к первой.

Вопрос: можно ли это как-нибудь исправить? Если родными средствами не получается, можно ли получить изначальную строку аргументов, до того, как ее обработал фреймворк?
5
16 февраля 2012 года
hardcase
4.5K / / 09.08.2005
Командную строку получить можно: Environment.CommandLine.
240
16 февраля 2012 года
aks
2.5K / / 14.07.2006
Ставь двойной слэш или обратный.
9.7K
16 февраля 2012 года
Vitamant
228 / / 07.02.2011
Большое спасибо. Вопрос решен. Кастомный метод:

Код:
public static List<string> GetCommandLineArguments()
{
    var result = new List<string>(16);
    var sb = new StringBuilder(Environment.CommandLine.Length);
    var waitQuote = false;
    var fileName = true;

    foreach (var c in Environment.CommandLine)
    {
        if (c == '"')
        {
            waitQuote = !waitQuote;
            continue;
        }

        if (!waitQuote && c == ' ')
        {
            if (fileName)
                fileName = false;
            else
                result.Add(sb.ToString());
            sb.Clear();
            continue;
        }

        sb.Append(c);
    }

    if (sb.Length != 0)
        result.Add(sb.ToString());

    return result;
}

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог