I need to start the command window with some arguments and run more commands inside.
For example, launch a test.cmd and run mkdir.
I can launch the test.cmd with processstartinfo , but i am not sure how to run further commands. Can I pass further arguments to the test.cmd process?
How do I go about this?
Unable to add comments to answer... SO writing here.
Andrea, This is what I was looking for. However the above code doesnt work for me.
I am launching a test.cmd which is new command environment (like razzle build environment) and I need to run further commands.
psi.FileName = @"c:\test.cmd";
psi.Arguments = @"arg0 arg1 arg2";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.StandardInput.WriteLine(@"dir>c:\results.txt");
p.StandardInput.WriteLine(@"dir>c:\results2.txt");
What are you trying to achieve? Do you actually need to open a command window, or do you need to simply make a directory, for example?
mkdir
is a windows executable - you can start this program in the same way you startcmd
- there's no need to start a command window process first.You could also create a batch file containing all the commands you want to run, then simply start it using the Process and ProcessStartInfo classes you're already using.
You can send further commands to cmd.exe using the process standard input. You have to redirect it, in this way:
Remember to write "exit" as your last command, otherwise the cmd process doesn't terminate correctly...
The
/c
parameter tocmd
.(
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
Start a cmd from c# is useful only if you have some big bat-file that you don't want to replicate in c#.
Maybe this post is helpful. Is this what you mean?