J'ai un programme VB.net dans lequel j'appelle la fonction Shell. Je voudrais obtenir la sortie de texte qui est produite à partir de ce code dans un fichier. Cependant, ce n'est pas la valeur de retour du code exécuté, donc je ne sais pas vraiment comment faire.
Ce programme est un service mais n’a aucun problème avec le disque car j’ai déjà enregistré d’autres informations. L'ensemble du service comporte plusieurs threads, je dois donc également m'assurer que le fichier, lorsqu'il est écrit, n'est pas déjà utilisé.
Vous ne pourrez pas capturer la sortie de Shell.
Vous devrez changer cela en un processus et vous devrez capturer les flux Sortie standard (et éventuellement une erreur) du processus.
Voici un exemple:
Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("ApplicationName.exe", "arguments")
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()
Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
sOutput = oStreamReader.ReadToEnd()
End Using
Console.WriteLine(sOutput)
Pour obtenir l'erreur standard:
'Add this next to standard output redirect
oStartInfo.RedirectStandardError = True
'Add this below
Using oStreamReader As System.IO.StreamReader = checkOut.StandardError
sOutput = oStreamReader.ReadToEnd()
End Using
Dirigez simplement la sortie vers un fichier texte?
MyCommand > "c:\file.txt"
Ensuite, lisez le fichier.
Dim proc As New Process
proc.StartInfo.FileName = "C:\ipconfig.bat"
proc.StartInfo.UseShellExecute = False
proc.StartInfo.RedirectStandardOutput = True
proc.Start()
proc.WaitForExit()
Dim output() As String = proc.StandardOutput.ReadToEnd.Split(CChar(vbLf))
For Each ln As String In output
RichTextBox1.AppendText(ln & vbNewLine)
lstScan.Items.Add(ln & vbNewLine)
Next
=============================================== ====================., créez un fichier de commandes sur deux lignes comme indiqué ci-dessous:
echo off
ipconfig
'assurez-vous de sauvegarder ce fichier batch sous le nom ipconfig.bat ou quel que soit le nom que vous décidez de choisir, mais assurez-vous de mettre le point bat à la fin.