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 . . .
Пожалуйста, помогите, а также обратите внимание, что я хочу, чтобы он активно показывал вывод, а не только показывал его в конце! Спасибо!