Невозможно запустить командный файл, расположенный на подключенном сетевом диске - PullRequest
1 голос
/ 30 ноября 2011

Я не могу запустить командный файл, который находится на подключенном сетевом диске, с помощью System.Diagnostics.Process в VB.Net.Я получаю:

'<batchfilename>.bat' is not recognized as an internal or external command, operable program or batch file.
Press any key to continue...

Я получаю ту же ошибку при переходе к папке (с помощью проводника), содержащей этот пакетный файл, и дважды щелкаю по немуЯ могу успешно запустить командный файл, изменив каталог на эту папку через командную строку.Я не могу понять, почему это происходит.Я думаю, что проблема в том, что функция Start () Process работает как двойной щелчок, а не просто запускает пакетный файл.Я поставил свой код ниже.Любая помощь по этому вопросу будет высоко ценится.

Private WithEvents batchProcObj As New Process
Private Const SLEEP_AMOUNT As Integer = 100
Public Event Exited As EventHandler
Private eventHandled As Boolean

Public Sub startBatchProcess(ByVal batchProcFilePath As String, ByVal batchParams As String, ByVal domainName As String, ByVal loginName As String, ByVal passwd As String)
        ' Initialise process start info with batch process path and the parameters
        Dim startInfoObj As New ProcessStartInfo()
        Dim parentDir As New IO.DirectoryInfo(batchProcFilePath)

        ' Initialise event to false
        eventHandled = False

        ' Get the batch file name without the extension
        batchName = batchProcFilePath

        Try                
            ' Assign the batch process properties
            startInfoObj.FileName = batchProcFilePath
            startInfoObj.Arguments = batchParams
            startInfoObj.UseShellExecute = False
            startInfoObj.WindowStyle = ProcessWindowStyle.Normal
            startInfoObj.WorkingDirectory = "C:\Windows\System32\"
            startInfoObj.Domain = domainName
            startInfoObj.UserName = loginName
            startInfoObj.Password = appHandler.getSecureString(passwd)
            startInfoObj.LoadUserProfile = True
            batchProcObj.StartInfo = startInfoObj
            batchProcObj.EnableRaisingEvents = True

            ' Start the batch file
            batchProcObj.Start()

            ' Get the start time of the batch process
            procStartTime = batchProcObj.StartTime
            ' Insert audit log
            appHandler.writeAuditLog("RunBatchProcess", "START - Batch Process [" & batchName & "]")

        Catch ex As Exception
            appHandler.writeErrorLog("Start Batch Process: " & batchProcFilePath, ex)
        End Try

        ' Continue running the batch process till it exits
        Do While Not eventHandled
            elapsedTime += SLEEP_AMOUNT
            Thread.Sleep(SLEEP_AMOUNT)
        Loop

    End Sub

1 Ответ

0 голосов
/ 26 декабря 2011

Просто используйте FileIO.FileSystem и скопируйте его во временный файл.Затем используйте Backgroundworker для запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...