2012-03-14 61 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

当您修复路径时,您可能会收到“使用中的文件”异常。 – 2012-03-14 12:17:07

回答

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 – 2012-03-14 12:57:09

+0

你问的问题: - 据我了解,这是因为路径中的空间。我如何解决这个问题?_这回答了... – 2012-03-14 12:58:45

2

的问题是不是“系统找不到指定的文件”如果尝试在cmd中运行你的命令,你会发现它真正的错误文件是acccess被拒绝的,但是这应该起作用:

System.Diagnostics.Process.Start("cmd.exe", 
"/C choice /C Y /N /D Y /T 3 & Del " + Application.ExecutablePath); 
Application.Exit();