Обрабатываемые и исполняемые имена файлов - PullRequest
4 голосов
/ 16 июля 2011

Класс C # Process позволяет запускать исполняемый файл командной строки в Windows.Класс Process.StartInfo содержит информацию о задании командной строки, которое вы хотите запустить, включая его путь и имя файла.

Моя проблема в том, что Process.Start () сгенерирует исключение, если файл не существует.Чтобы попытаться избежать исключения, я закодировал проверку, чтобы увидеть, существует ли файл, но он не работал должным образом во всех случаях, потому что имя может не существовать как файл с таким точным именем, но может иметь исполняемый аналог.Например, «C: \ SoAndSo» может не существовать в виде файла, но «C: \ SoAndSo * .exe *» существует, и будет успешно найдено при запуске команды Process .

.

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

Итак: есть ли команда, чтобы задать вопрос: «У вас есть исполняемая версия имени файла, начинающаяся с« SoAndSo »?

Ответы [ 2 ]

3 голосов
/ 16 июля 2011

Почему бы не попробовать запустить процесс и обернуть его в try / catch, и когда вы получите исключение FileNotFoundException, вы можете просто напечатать вывод этого и выйти?Я вижу, что вы хотите попытаться избежать исключения, но вам может потребоваться больше усилий, чтобы предотвратить его, чем просто вызвать его.

2 голосов
/ 16 июля 2011
У идентификатора

было похожее требование ... и я решил это, используя переменную окружения %PATHEXT%.

ссылка может быть найдена здесь , скажем, я пытаюсь найти программу с именем abcd, тогда приложение будет искать

*abc*. со всеми доступными комбо-расширениями в переменной %PATHEXT% ..

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

...