VB.net, как запустить пакетный файл с активным выводом записи и как установить рабочий каталог файла bat

Поэтому я создаю инструменты для модов в Visual Basic, эти инструменты полагаются на командные файлы, и мне нужно их запускать. Я также хочу журнал вывода, который показывает, что выводятся командные файлы. Я также столкнулся с проблемой, когда командные файлы думают, что они находятся в расположении основного исполняемого файла, но они находятся где-то еще.

Вот как все структурировано: командные файлы находятся в C:\LucasArts\BFBuilder\DataX, где X - переменная поля со списком и может быть изменена. Основной exe находится в C:\LucasArts. Например, пакетный файл Windows 8 находится в C:\LucasArts\BFBuilder\DataX\Win8Munge.bat. Вот некоторый код, который я пробовал, который не сработал:

    Private Sub BFBuilderMunge_BT_Click(sender As Object, e As EventArgs) Handles BFBuilderMunge_BT.Click
    Select Case MungeProgram_CB.Text
        Case "64 Bit Munge"
            BFMunge("64bitMunge.bat")
        Case "Standard Munge"
            BFMunge("Munge.bat")
        Case "Windows 7 Munge"
            BFMunge("Win7Munge.bat")
        Case "Windows 8 Munge"
            BFMunge("Win8Munge.bat")
        Case "Sound Munge"
            BFMunge("soundmunge.bat")
        Case "Sound Munge DIR"
            BFMunge("soundmungedir.bat")
    End Select
End Sub

'BFMunge
Sub BFMunge(a)

    Try
        Dim CMD As New Process
        With CMD
            With .StartInfo
                .FileName = "BFBuilder\data" & ModID_CB.Text & "\" & a
                .UseShellExecute = False
                .RedirectStandardOutput = True
                .RedirectStandardError = True
                .WorkingDirectory = Application.StartupPath & "\BFBuilder\data" & ModID_CB.Text
            End With
            .Start()
            .WaitForExit()
            OutputLog_RTB.Text = CMD.StandardOutput.ReadToEnd & vbNewLine & vbNewLine & CMD.StandardError.ReadToEnd & CMD.StartInfo.WorkingDirectory

        End With

    Catch ex As Exception
        'Display errors
        MsgBox(ex.Message)
    End Try
End Sub

Конечно, это не весь проект, но этого достаточно, чтобы вы поняли, что происходит. Вот код командного файла (Windows 8 Munge):

cd _build_pc
@call munge.bat
cd ..
if EXIST MungeLog.txt Notepad.exe Mungelog.txt
Echo Done Munging, Potential errors can be found in Mungelog.txt
PAUSE

Вот вывод для командного файла:

The system cannot find the path specified.

Теперь, если я изменю эти строки:

                    .FileName = "BFBuilder\data" & ModID_CB.Text & "\" & a
                .UseShellExecute = True
                '.RedirectStandardOutput = True
                '.RedirectStandardError = True
                '.WorkingDirectory = Application.StartupPath & "\BFBuilder\data" & ModID_CB.Text

'OutputLog_RTB.Text = CMD.StandardOutput.ReadToEnd & vbNewLine & vbNewLine & CMD.StandardError.ReadToEnd & CMD.StartInfo.WorkingDirectory

Это будет вывод:

C:\LucasArts\REPACKAGE\LucasArts>cd _build_pc 
C:\LucasArts\REPACKAGE\LucasArts>cd .. 
C:\LucasArts\REPACKAGE>if EXIST MungeLog.txt Notepad.exe Mungelog.txt 
C:\LucasArts\REPACKAGE>Echo Done Munging, Potential errors can be found in 
Mungelog.txt 
Done Munging, Potential errors can be found in Mungelog.txt
C:\LucasArts\REPACKAGE>PAUSE
Press any key to continue . . . 

Пожалуйста, помогите, а также обратите внимание, что я хочу, чтобы он активно показывал вывод, а не только показывал его в конце! Спасибо!

0 ответов

Другие вопросы по тегам