Start command windows and run commands inside

You can send further commands to cmd.exe using the process standard input. You have to redirect it, in this way:

var startInfo = new ProcessStartInfo
                    {
                        FileName = "cmd.exe",
                        RedirectStandardInput = true,
                        RedirectStandardOutput = true,
                        UseShellExecute = false,
                        CreateNoWindow = true
                    };

var process = new Process {StartInfo = startInfo};

process.Start();
process.StandardInput.WriteLine(@"dir>c:\results.txt");
process.StandardInput.WriteLine(@"dir>c:\results2.txt");
process.StandardInput.WriteLine("exit");

process.WaitForExit();

Remember to write "exit" as your last command, otherwise the cmd process doesn't terminate correctly...


The /c parameter to cmd.

ProcessStartInfo start = new ProcessStartInfo("cmd.exe", "/c pause");
Process.Start(start);

(pause is just an example of what you can run)

But for creating a directory you can do that and most other file operations from c# directly

System.IO.Directory.CreateDirectory(@"c:\foo\bar");

Start a cmd from c# is useful only if you have some big bat-file that you don't want to replicate in c#.