2016-08-15 81 views
0

我試圖從一個VB.NET應用程序內運行目標相對路徑。我已經確保使用反斜槓(而不是正斜槓),並且還要將工作目錄設置爲正確的源路徑來運行Process;嘗試運行時仍出現The system cannot find the file specified錯誤。在Windows中運行相對路徑?

例如,我有(僞代碼):

txtSource.text path = "C:\Windows\System32"

txtResult.text path = "..\notepad.exe"

這裏的小組到目前爲止:

Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click 

    Try 

     ' Create the process object 
     Dim pRun As New Process() 

     ' Set it to run from the Source folder (Working Directory) 
     With pRun.StartInfo 
      .UseShellExecute = False 
      .WorkingDirectory = IO.Path.GetDirectoryName(txtSource.Text.Trim) 
      .FileName = txtResult.Text.Trim 
     End With 

     pRun.Start() 

     ' Wait for it to finish 
     pRun.WaitForExit() 

    Catch ex As Exception 

     Debug.Print(ex.Message) 

    End Try 

End Sub 
+0

兩點('..')表示一個目錄級別比當前更高。一個點('.')表示當前目錄。 – TnTinMn

+0

在此示例中,C:\ Windows \ notepad.exe是比C:\ Windows \ System32更高的一個目錄級別。 –

回答

0

IO.Path.GetDirectoryName("C:\Windows\System32")返回「C :\視窗」;包含「C:\ Windows \ System32」的目錄。

StartInfo.Filename = "..\notepad.exe"告訴過程在「C:\」中查找notepad.exe

此外,爲此,您需要設置StartInfo.UseShellExecute = True;說明請參見:ProcessStartInfo Class

With pRun.StartInfo 
    .UseShellExecute = True 
    .WorkingDirectory = txtSource.Text.Trim 
    .FileName = txtResult.Text.Trim 
End With 
+0

啊哈!對於這個例子,我最初將txtSource設置爲包含實際文件名的完整路徑,但是在沒有首先進行雙重檢查的情況下縮短了示例,但將'.UseShellExecute'設置爲'True'是關鍵。當你每天花12個小時進行編碼時,總會遇到那些你想念的小事,幾天,大聲笑。謝謝! –