UNIX テキスト ファイルの 1 つを dos テキスト ファイルに変換しようとしています。次のコマンドを使用しています。
Shell(string.format("unix2dos {0}", sFileCompletePath))
サーバーの環境パスに unix2dos コマンドを既に追加しています。
しかし、上記のコマンドを実行すると、ファイルがディスク上にある場合でも FileNotFound 例外が発生します。
私が見逃しているものはありますか?
UNIX テキスト ファイルの 1 つを dos テキスト ファイルに変換しようとしています。次のコマンドを使用しています。
Shell(string.format("unix2dos {0}", sFileCompletePath))
サーバーの環境パスに unix2dos コマンドを既に追加しています。
しかし、上記のコマンドを実行すると、ファイルがディスク上にある場合でも FileNotFound 例外が発生します。
私が見逃しているものはありますか?
このようにすることをお勧めします:
Public Sub ShellandWait(ByVal ProcessPath As String, ByVal Arguments As String)
Dim objProcess As System.Diagnostics.Process
Try
objProcess = New System.Diagnostics.Process()
objProcess.StartInfo.Arguments = Arguments
objProcess.StartInfo.FileName = ProcessPath
objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
objProcess.Start()
'Wait until it's finished
objProcess.WaitForExit()
'Exitcode as String
Console.WriteLine(objProcess.ExitCode.ToString())
objProcess.Close()
Catch ex As Exception
Console.WriteLine("Could not start process " & ProcessPath & " " & ex.Message.ToString)
End Try
End Sub
より複雑ですが、プロセスをより強力に制御できます。
スペースが含まれている場合sFileCompletePath
は、二重引用符を追加することで解決できます。
Shell(String.Format("unix2dos ""{0}""", sFileCompletePath))
プロセスをより細かく制御したい場合は、Chris が投稿した例を使用することをお勧めします。