VB: Batchprogramm: Resultat zurückgeben an VB Form (Textfeld)
Hallo Admins,
sitze aktuell an einem kleinen Problem. Per VB wird das Tool NCFTP(.exe) gestartet, NCFTP arbeitet allerdings im CMDfenster.
Kann ich diese Ausgabe live in meine Textbox übertragen?
Aktuell führe ich den Befehl wie folgt aus:
Daraufhin öffnet sich eine CMD mit folgender Ausgabe:
(BILD1: batch_ausgabe)
Gerne möchte ich alles was das Tool von sich gibt, in eine Textbox übernehmen, also Fehler, Erfolg, Durchsatz, ...
Hättet Ihr mir eine Idee oder gar eine Lösung(sansatz) wie ich sinnvoll einen Stream zusammenzimmern kann?
Bin leider noch recht frisch in der Sache und stelle mich sicherlich recht dämlich an, habt Nachsicht!
Ich Danke im Voraus,
Grüße
PixL
Ps: Dieser Thread (Batch ausgabe in TextBox anzeigen lassen) hat mir leider nicht weitergeholfen.
sitze aktuell an einem kleinen Problem. Per VB wird das Tool NCFTP(.exe) gestartet, NCFTP arbeitet allerdings im CMDfenster.
Kann ich diese Ausgabe live in meine Textbox übertragen?
Aktuell führe ich den Befehl wie folgt aus:
Dim startInfo As New ProcessStartInfo("ncftpput")
startInfo.UseShellExecute = True
startInfo.Arguments = "-u " & User & " -p " & PW & " -R " & IP & " / " & Auswahl
Process.Start(startInfo)
Daraufhin öffnet sich eine CMD mit folgender Ausgabe:
(BILD1: batch_ausgabe)
Gerne möchte ich alles was das Tool von sich gibt, in eine Textbox übernehmen, also Fehler, Erfolg, Durchsatz, ...
Hättet Ihr mir eine Idee oder gar eine Lösung(sansatz) wie ich sinnvoll einen Stream zusammenzimmern kann?
Bin leider noch recht frisch in der Sache und stelle mich sicherlich recht dämlich an, habt Nachsicht!
Ich Danke im Voraus,
Grüße
PixL
Ps: Dieser Thread (Batch ausgabe in TextBox anzeigen lassen) hat mir leider nicht weitergeholfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 339667
Url: https://administrator.de/contentid/339667
Ausgedruckt am: 24.11.2024 um 02:11 Uhr
7 Kommentare
Neuester Kommentar
Dim startInfo As New ProcessStartInfo("cmd.exe")
With startInfo
.UseShellExecute = False
.Arguments = "/c ncftpput -u " & User & " -p " & PW & " -R " & IP & " / " & Auswahl
.RedirectStandardOutput = True
.RedirectStandardError = True
.CreateNoWindow = True
End with
Dim proc as Process = Process.Start(startInfo)
proc.WaitForExit()
Dim strOut = proc.StandardOutput.ReadToEnd()
Dim strErr = proc.StandardError.ReadToEnd()
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(850)
If strOut <> "" Then
txtOut.Text = enc.GetString(proc.StandardOutput.CurrentEncoding.GetBytes(strOut))
End If
If strErr <> "" Then
txtOut.Text = enc.GetString(proc.StandardError.CurrentEncoding.GetBytes(strErr))
End If
Ab und zu mal die Doku lesen :-P.
Gruß Bibersbaum
Geht hier einwandfrei ...
Du musst die cmd.exe mit /c starten nicht ncftpput als ausführbare Datei . S.o.
Doch das funktioniert einwandfrei inkl. Umlaute Konvertierung, sonst würde ich das hier ja nicht posten.
Du solltest dir mal
ShellExecute muss False sein damit stdout und stderr umgeleitet werden können.
Du solltest dir mal
cmd /?
zu Gemüte führen und mit einem einfachen Argumenten wie/c ping -n 1 8.8.8.8
anfangen.ShellExecute muss False sein damit stdout und stderr umgeleitet werden können.