C# Code Snippet - Execute Shell 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 void ExecuteShellCommand(string _FileToExecute, string _CommandLine, ref string _outputMessage, ref string _errorMessage){

// Set process variable// Provides access to local and remote processes and enables you to start and stop local system processes.System.Diagnostics.Process _Process = null;
try{
_Process =
new System.Diagnostics.Process();
// invokes the cmd process specifying the command to be executed.string _CMDProcess = 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.string _Arguments = string.Format(System.Globalization.CultureInfo.InvariantCulture, "/C {0}", new object[] { _FileToExecute });
// pass any command line parameters for executionif (_CommandLine != null && _CommandLine.Length > 0){
_Arguments +=
string.Format(System.Globalization.CultureInfo.InvariantCulture, " {0}", new object[] { _CommandLine, System.Globalization.CultureInfo.InvariantCulture });}

// Specifies a set of values used when starting a process.System.Diagnostics.ProcessStartInfo _ProcessStartInfo = 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 _Win32Exception){

// ErrorConsole.WriteLine("Win32 Exception caught in process: {0}", _Win32Exception.ToString());}

catch (Exception _Exception){

// ErrorConsole.WriteLine("Exception caught in process: {0}", _Exception.ToString());}

finally{
// close process and do cleanup_Process.Close();
_Process.Dispose();
_Process =
null;}
}

string target = @"""%temp%""";string _Output = null;
string _Error = null;
ExecuteShellCommand(
"del", "/F /S /Q " + target + " ", ref _Output, ref _Error);
MessageBox.Show(_Output.ToString());

MessageBox.Show(_Error.ToString());

Comments