2016-08-15 1 views
0

私はVB.NETアプリケーション内から目的の相対パスを実行しようとしています。私はバックスラッシュ(スラッシュではなく)を使用して、作業ディレクトリを正しいソースパスに設定してプロセスを実行しました。それを実行しようとするとまだ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

2つのドット( '..')は、現在のディレクトリレベルよりも1つ上のディレクトリを意味します。 1つのドット( '.')は現在のディレクトリを意味します。 – TnTinMn

+0

この例では、C:\ Windows \ notepad.exeは、C:\ Windows \ System32より1つ上位のディレクトリです。 –

答えて

0

IO.Path.GetDirectoryName("C:\Windows\System32")戻る「C :\ Windows "; "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

Aha!私はもともとtxtSourceを実際のファイル名を含む完全なパスに設定していましたが、最初にlolを二重チェックせずに '.UseShellExecute'を' True'に設定することはその例のために短くしました。あなたが1日に12時間コーディングをしていたときに、あなたが見逃していた小さなことは、いつも笑い事でした。ありがとう! –