2012-03-14 86 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();