2012-03-14 3 views
1

Я пытаюсь получить местоположение исполняемого файла в памяти с помощью Application.ExecutablePath и удалить его из своего текущего местоположения, однако я получаю ошибку The system cannot find the file specified.Как обращаться с именами файлов

Насколько я понимаю, это из-за пространства на пути. Как исправить эту проблему? Вот соответствующий код:

System.Diagnostics.Process p = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(); 
psi.FileName = @"cmd.exe /C Del " + Path.GetFullPath(Application.ExecutablePath); 
p.StartInfo = psi; 
p.Start(); 
+3

Когда вы исправили путь, вы, вероятно, получите исключение «Файл в использовании». –

ответ

6

Я предпочитаю String.Format над простыми строковых concats:

psi.FileName = string.Format("cmd.exe /C Del \"{0}\"", 
           Path.GetFullPath(Application.ExecutablePath)); 

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

psi.FileName = @"cmd.exe /C Del """ + Path.GetFullPath(Application.ExecutablePath) + """"; 
+0

Не работает ... интересно, как 5 upvotes –

+0

Вопрос, который вы задали: _ Насколько я понимаю, это связано с пространством на пути. Как решить эту проблему? _ Это отвечает на это ... –

2

Проблема это не «система не может найти указанный файл», если попытаться запустить вашу команду в cmd, вы сами увидите, что реальная ошибка, которую файл имеет отказ в доступе, но это должно работать:

System.Diagnostics.Process.Start("cmd.exe", 
"/C choice /C Y /N /D Y /T 3 & Del " + Application.ExecutablePath); 
Application.Exit(); 
Смежные вопросы