Как можно анализировать аргументы командной строки, которые должны интерпретироваться как пути? args [] содержит строки, которые автоматически соединяются, если они цитируются, например:
example.exe один два "три четыре"
args[0] = one
args[1] = two
args[2] = three four
Однако, args [] не будет использовать свойство parse "C:\Example \" в качестве аргумента. Скорее, он предоставит аргумент как "C:\Example" "(с добавленной дополнительной цитатой). Это связано с обратным слэшем в пути, который рассматривается как escape-символ, и, таким образом, конечная цитата, которую пользователь поставил в команде -line становится частью аргумента.
.e.g:
example.exe one "C:\InputFolder" "C:\OutuptFolder \"
args[0] = one
args[1] = C:\InputFolder"
args[2] = C:\OutputFolder"
Легкий kludge может быть:
_path = args[i].Replace("\"", @"\");
Однако я уверен, что для этого есть лучшая практика. Как можно правильно проанализировать командную строку, которая включает пути, предотвращая неправильное заполнение массивом args [] укусами, которые были проанализированы для escape-символов?
ПРИМЕЧАНИЕ. Я бы не хотел включать в мой проект всю библиотеку синтаксического анализа командной строки! Мне нужно только обрабатывать цитируемые дорожки и делать это вручную. Пожалуйста, не рекомендуйте NConsoler, Mono или любую другую большую библиотеку синтаксического анализа командной строки "кухонная раковина".
ТАКЖЕ ПРИМЕЧАНИЕ. Насколько я могу судить, это не дублирующий вопрос. В то время как другие вопросы сосредоточены на общем анализе командной строки, этот вопрос специфичен для проблемы, которую вводят пути, когда части их интерпретируются как escape-последовательности.