Avatar billede tahoo Nybegynder
22. december 2003 - 18:26 Der er 13 kommentarer og
1 løsning

shell VB.Net

jeg er ved at lave et lille windows program, som kør en bat-fil

den kalder jeg så gennem vb.net via shell - hvordan kan jeg får output af bat filen ind i en variable ?

Håber nogle kan hjælpe..
Avatar billede arne_v Ekspert
22. december 2003 - 18:35 #1
Du laver en System.Diagnostics.Process objekt, kalder Start metoden
med din kommando og læser output fra StandardOutput propertyen.
Avatar billede arne_v Ekspert
22. december 2003 - 18:35 #2
Eksempel fra docs:

Dim myProcess As New Process()
Dim myProcessStartInfo As New ProcessStartInfo("Process_StandardOutput_Sample.exe")
myProcessStartInfo.UseShellExecute = False
myProcessStartInfo.RedirectStandardOutput = True
myProcess.StartInfo = myProcessStartInfo
myProcess.Start()

Dim myStreamReader As StreamReader = myProcess.StandardOutput
' Read the standard output of the spawned process.
Dim myString As String = myStreamReader.ReadLine()
Console.WriteLine(myString)
myProcess.Close()
Avatar billede tahoo Nybegynder
22. december 2003 - 18:51 #3
undskyld jeg er lidt dum.. - men har kun arbejdet med vb.net i 5 - 10 timer :o)

der kommer fejl under StreamReader - når jeg sætter det ind..

det jeg gerne vil, er at have output ud fx. via msgbox

min kode :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myProcess As New Process
        Dim myProcessStartInfo As New ProcessStartInfo("D:\test.bat")
        myProcessStartInfo.UseShellExecute = False
        myProcessStartInfo.RedirectStandardOutput = True
        myProcess.StartInfo = myProcessStartInfo
        myProcess.Start()

        Dim myStreamReader As StreamReader = myProcess.StandardOutput
        ' Read the standard output of the spawned process.
        Dim myString As String = myStreamReader.ReadLine()
        Console.WriteLine(myString)
        myProcess.Close()
    End Sub
Avatar billede arne_v Ekspert
22. december 2003 - 18:55 #4
Hvilken fejl ?
Avatar billede arne_v Ekspert
22. december 2003 - 18:56 #5
I GUI skal du vel erstatte:

Console.WriteLine(myString)

med:

myTextBox.Text = myString
Avatar billede arne_v Ekspert
22. december 2003 - 18:57 #6
Hov du sagde msgbox, så skal du vel bare poutputte myString med den.
Avatar billede tahoo Nybegynder
22. december 2003 - 19:02 #7
min kode:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myProcess As New Process
        Dim myProcessStartInfo As New ProcessStartInfo("D:\test.bat")
        myProcessStartInfo.UseShellExecute = False
        myProcessStartInfo.RedirectStandardOutput = True
        myProcess.StartInfo = myProcessStartInfo
        myProcess.Start()

  *-->  Dim myStreamReader As StreamReader = myProcess.StandardOutput
        Dim myString As String = myStreamReader.ReadLine()
        box1.Text = myString
        myProcess.Close()
    End Sub

* Her kommer det fejl ved StreamReader
Avatar billede tahoo Nybegynder
22. december 2003 - 19:03 #8
altså der kommer bare blå streg under...
Avatar billede arne_v Ekspert
22. december 2003 - 19:23 #9
Har du:

Imports System.IO

i toppen ?
Avatar billede tahoo Nybegynder
22. december 2003 - 19:29 #10
nej det har jeg ikke.. - men efter jeg sat den ind "Imports System.IO" + lavede Dim myString As String = myStreamReader.Readline() om til lavede Dim myString As String = myStreamReader.Readline() virker det...

Tak for hjælpen.. - men kan du lige sige mig hvorfor Imports System.IO skal være i toppen.. (syntes heller ikke der står noget i docs omn det under StandardOutput property) - eller er det bare mig..

tak :-) - + god jul
Avatar billede tahoo Nybegynder
22. december 2003 - 19:30 #11
UPS:
om til  = Dim myString As String = myStreamReader.ReadToEnd() virker det...
Avatar billede arne_v Ekspert
22. december 2003 - 19:32 #12
Enten skal du have den import eller så skal du bruge:

Dim myStreamReader As System.IO.StreamReader
Avatar billede arne_v Ekspert
22. december 2003 - 19:33 #13
ReadLine læser en linie.

ReadToEnd læser das ganze molevitten.
Avatar billede tahoo Nybegynder
22. december 2003 - 19:34 #14
SUPER... tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester