Команда оболочки VB.NET, выбрасывающая файл не найден, исключение - PullRequest
4 голосов
/ 16 июля 2009

Я пытаюсь преобразовать один из моих текстовых файлов Unix в текстовый файл DOS. Я использую следующую команду:

Shell(string.format("unix2dos {0}", sFileCompletePath))

Я уже добавил команду unix2dos в путь к своей среде на сервере.

Но когда я выполняю вышеупомянутую команду, я получаю исключение FileNotFound, даже если файл находится на диске.

Есть что-то, что я пропускаю?

Ответы [ 2 ]

3 голосов
/ 16 июля 2009

Я бы порекомендовал сделать это так:

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

Это сложнее, но дает вам больше власти над вашими процессами.

1 голос
/ 16 июля 2009

Если sFileCompletePath содержит пробелы, его можно решить, добавив вокруг него двойные кавычки:

Shell(String.Format("unix2dos ""{0}""", sFileCompletePath))

Если вы хотите иметь больший контроль над процессом, может быть лучше использовать пример, опубликованный Крисом.

...