Visual Basic Code Snippet - Execute Shell Commands from .Net
(VB) Visual Basic code snippet creates a command process and then invokes the command that we want to execute. The result of the command and any errors occurred during execution is stored in a string variables. This is a great method to execute your DOS commands from .Net.
Bookmark:
Visual Basic Code Snippet - Execute Shell Commands from .Net
This .Net Visual Basic code snippet executes a shell command. To use this function simply provide the file/command to execute, command line parameters (optional), string variable to store output and string variable to store errors occurred during execution.
The code creates a command process and then invokes the command that we want to execute. The result of the command and any errors occurred during execution is stored in a string variables, which can then be used for further reference. This is a great method to execute your DOS commands from .Net.
''' <summary> ''' Execute a shell command ''' </summary> ''' <param name="_FileToExecute">File/Command to execute</param> ''' <param name="_CommandLine">Command line parameters to pass</param> ''' <param name="_outputMessage">returned string value after executing shell command</param> ''' <param name="_errorMessage">Error messages generated during shell execution</param> Public Sub ExecuteShellCommand(ByVal _FileToExecute As String, ByVal _CommandLine As String, ByRef _outputMessage As String, ByRef _errorMessage As String) ' Set process variable ' Provides access to local and remote processes and enables you to start and stop local system processes. Dim _Process As System.Diagnostics.Process = Nothing Try _Process = New System.Diagnostics.Process() ' invokes the cmd process specifying the command to be executed. Dim _CMDProcess As String = String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}\cmd.exe", New Object() { Environment.SystemDirectory }) ' pass executing file to cmd (Windows command interpreter) as a arguments ' /C tells cmd that we want it to execute the command that follows, and then exit. Dim _Arguments As String = String.Format(System.Globalization.CultureInfo.InvariantCulture, "/C {0}", New Object() { _FileToExecute }) ' pass any command line parameters for execution If _CommandLine IsNot Nothing AndAlso _CommandLine.Length > 0 Then _Arguments &= String.Format(System.Globalization.CultureInfo.InvariantCulture, " {0}", New Object() { _CommandLine, System.Globalization.CultureInfo.InvariantCulture }) End If ' Specifies a set of values used when starting a process. Dim _ProcessStartInfo As New System.Diagnostics.ProcessStartInfo(_CMDProcess, _Arguments) ' sets a value indicating not to start the process in a new window. _ProcessStartInfo.CreateNoWindow = True ' sets a value indicating not to use the operating system shell to start the process. _ProcessStartInfo.UseShellExecute = False ' sets a value that indicates the output/input/error of an application is written to the Process. _ProcessStartInfo.RedirectStandardOutput = True _ProcessStartInfo.RedirectStandardInput = True _ProcessStartInfo.RedirectStandardError = True _Process.StartInfo = _ProcessStartInfo ' Starts a process resource and associates it with a Process component. _Process.Start() ' Instructs the Process component to wait indefinitely for the associated process to exit. _errorMessage = _Process.StandardError.ReadToEnd() _Process.WaitForExit() ' Instructs the Process component to wait indefinitely for the associated process to exit. _outputMessage = _Process.StandardOutput.ReadToEnd() _Process.WaitForExit() Catch _Win32Exception As Win32Exception ' Error Console.WriteLine("Win32 Exception caught in process: {0}", _Win32Exception.ToString()) Catch _Exception As Exception ' Error Console.WriteLine("Exception caught in process: {0}", _Exception.ToString()) Finally ' close process and do cleanup _Process.Close() _Process.Dispose() _Process = Nothing End Try End Sub
Here is a simple example showing how to use above function (ExecuteShellCommand) to execute a simple DOS dir command and show output result in a richtextbox.
Dim _Output As String = Nothing Dim _Error As String = Nothing ExecuteShellCommand("dir", "c:\", _Output, _Error) richTextBox1.Text = _Output
This example shows how to use above method to execute DOS del command to delete all the ZIP files in c:\temp folder using .Net.
/F - Force deleting of read-only files.
/Q - Quiet mode, do not ask if ok to delete on global wildcard.
Dim _Output As String = Nothing Dim _Error As String = Nothing ExecuteShellCommand("del", "/F /Q c:\temp\*.zip", _Output, _Error)
VB Keywords Used:
- Process
- Format
- ProcessStartInfo
- Environment
- SystemDirectory
- InvariantCulture
- Win32Exception
- Exception
Code Snippet Information:
- Applies To: .Net, VB, Visual Basic, CLI, Shell Execute from .Net, DOS, System Processes, Execute DOS Commands from .Net, Redirect Standard Output, Windows command interpreter
- Programming Language : Visual Basic (VB)
External Resources: