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