How to Execute a Command in C#
2012-06-12 10:00
507 查看
Introduction
It is normal practice to open the Windows command prompt and execute commands. The command when executed shows the result onto the screen. There are many commands that we execute daily such as dir, find, etc. A situation may arise when you want to execute a (shell) command from the C# application.Don't worry!!! Here is the code to do so…
Using the Code
The code given below creates a process i.e. a command process and then invokes the command that we want to execute. The result of the command is stored in astringvariable, which can then be used for further reference. The command execution can happen in two ways, synchronously and asynchronously. In the asynchronous command execution, we just invoke the command execution using a thread that runs independently. The code has enough comments, hence making it self-explanatory.
Below is the code to execute the command synchronously:
/// <summary>
/// Executes a shell command synchronously.
/// </summary>
/// <param name="command">stringcommand</param>
/// <returns>string, as output of the command.</returns>
public void ExecuteCommandSync(object command)
{
try
{
// create the ProcessStartInfo using "cmd" as the program to be run,
// and "/c " as the parameters.
// Incidentally, /c tells cmdthat we want it to execute the command that follows,
// and then exit.
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
// The following commands are needed to redirect the standard output.
// This means that it will be redirected to the Process.StandardOutput StreamReader.
procStartInfo.RedirectStandardOutput= true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow= true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
stringresult = proc.StandardOutput.ReadToEnd();
// Display the command output.
Console.WriteLine(result);
}
catch (Exception objException)
{
// Log the exception
}
}
The above code invokes the
cmdprocess specifying the command to be executed. The option
procStartInfo.RedirectStandardOutputis set to
true, since we want the output to be redirected to the
StreamReader. The
procStartInfo.CreateNoWindowproperty is set to
true, as we don't want the standard black window to appear. This will execute the command silently.
Below is the code to execute the command asynchronously:
/// <summary>
/// Execute the command Asynchronously.
/// </summary>
/// <param name="command">stringcommand.</param>
public void ExecuteCommandAsync(stringcommand)
{
try
{
//Asynchronously start the Thread to process the Execute command request.
Thread objThread = new Thread(new ParameterizedThreadStart(ExecuteCommandSync));
//Make the thread as background thread.
objThread.IsBackground = true;
//Set the Priority of the thread.
objThread.Priority = ThreadPriority.AboveNormal;
//Start the thread.
objThread.Start(command);
}
catch (ThreadStartException objException)
{
// Log the exception
}
catch (ThreadAbortException objException)
{
// Log the exception
}
catch (Exception objException)
{
// Log the exception
}
}
If we observe carefully, the asynchronous execution of the command actually invokes the synchronous command execution method using a thread. The thread runs in the background making the command execution asynchronous in nature.
In the above execution sample, we find that there are two result sets of the command "
dir". The first one appears immediately after the command and the second appears after the "Done!" statement. In this case, the first one is the synchronous execution of the command, which happens immediately and the second is the asynchronous execution of the "
dir" command.
相关文章推荐
- How to Execute a Command in C# ?
- How to Execute a Command in C# ?
- How to execute an OS command in SQL*PLUS without leaving the session ?
- How to execute system command in MSSQL
- how to execute sql script in c#
- How to create and execute JAR file in Java – Command line Eclipse Netbeans
- How to execute the command with root jurisdiction in pyCharm
- How to execute system command in MSSQL
- How to execute system command in MSSQL
- How to Insert OLE Object (Adobe Acrobat Document) in Word with C#(如何使用C#在Word中插入OLE对象-PDF文件)
- How to cancel parallel loops in .NET C# z
- How to install oracle by Command Line Interface(CLI) in silent mode on Linux
- how to write super fast file streaming code in C#?
- How to Mount and Unmount Filesystem / Partition in Linux (Mount/Umount Command Examples)
- How to use "for/" batch command in Dos extention
- How to pass in/out return VB Byte array from a COM Component written in C#
- C#中反射的使用(How to use reflect in CSharp)(3)Emit的使用
- how to set value for cmake arguement in command
- How to write a DCOM server in C# 如何用C#编写DCOM服务器
- Howt to delay code execute when using dwr ajx in javascript