Run multiple net use commands for a process using c# - c#

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new
System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C net use W: \\\\abcdpc25\\views\\Projects ";
process.StartInfo = startInfo;
process.Start();
I want to run multiple net use commands and i am not sure how to go about it
I am not sure if something like below would work .
startInfo.Arguments = "/C net use W: \\\\abcdpc25\\views\\Projects
net use H: \\\\abcdpc25\\views\\Project456 net use E:
\\\\abcdpc25\\views\\Project123";

Use & as the separator between commands and it should work.
You can also put all the net use statements in a batch file and put the batch file name on your command line.
You can also launch multiple processes, one for each net use.

Related

Making directories with command line on C#

System.Diagnostics.Process process = new System.Diagnostics.Process ();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo ();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "md " + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
process.StartInfo = startInfo;
process.Start ();
I'm attempting to make a directory on the desktop with this command, it doesn't make one however. Can anyone tell me why?
Just do this:
Directory.CreateDirectory(Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),
"my new folder name"));
Always prefer using the .NET class library instead of invoking external processes to do your work, unless you have a very specific reason not to do so.
One of the reasons your code is not working is because you are using the wrong syntax for cmd.exe. In order to pass a command as an argument, you have to use the following with the /K switch (use cmd /? for more information):
cmd.exe /K MD "c:\test\blah"
Another reason your code won't work is that the path you're providing to the MD command is just the path to the desktop itself:
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
You have forgotten to append the name of the folder you want to create on the desktop.

Is there anyway I can get the desired exit value from PsExec in C#?

This is the command I am currently using for remote installation using psExec.
psExec \\MyRemoteComputer -s -c MyInstallationFile.exe /q
When I issue this command in Command Prompt Window, it works fine. If MyRemoteComputer cannot be reached, it returns error. After that, when I check the exit code with "echo %errorlevel%", it returns 53, which is correct exit code.
I coded with C# using Process like this..
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = ".....psExec.exe";
startInfo.WorkingDirectory = ".....";
startInfo.Arguments = #"\\MyRemoteComputer -s -c MyInstallationFile.exe /q";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow = true;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process proc = Process.Start(startInfo);
....
proc.WaitForExit();
Console.WriteLine(proc.ExitCode);
It runs fine..but..when I checked the ExitCode(Obviously, when myRemoteComputer cannot be reached), it was 6, which is other than 53.
It is sort of making sense why it is happening, but is there any way I can retrieve the 53 value, NOT 6?
I tried a couple of things..
cmd /c psExec.exe ....
created a batch file, then output %errorlevel% as a file inside that batch file...then I used this batch file in my ProcessStartInfo....
Environment.GetEnvironmentVariable
None of them worked at all...I can't get my desired return value at all in the code...
There is really no way to retrieve the value I want??
Thanks in advance.

Unable to execute cmd commands from C#

I want to execute cmd commands from Visual Studio (using c#). There are two commands which I want to run.
I referred this post, but not working in my case.
My code is:
private void ExecuteCmdCommands()
{
string strCmdText;
strCmdText = #"cd C:\Test + makecab /f wsp.ddf";
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = strCmdText;
process.StartInfo = startInfo;
process.Start();
}
When I run this code, only command prompt is open no commands are executed. What am I missing?
Don change directory, simply shell open the file:
strCmdText = #"C:\Test + makecab /f wsp.ddf";
Edit: Set the working directory:
startInfo.WorkingDirectory = #"C:\Test";
In order to call 2 command from one line, you need to use the & sign.
In your case:
#"/c cd C:\Test & makecab /f wsp.ddf";
Also dont forget the /c flag, telling the cmd to execute the command.
try to change to strCmdText = #"C:\Test + makecab /f wsp.ddf";
Just a guess, but it looks like you are attempting to execute 2 different command on the same line??
First changing the directory is not necessary, and you don't need to execute cmd.exe. Just create a process directly for the makecab program.
startInfo.Filename = #"makecab.exe";
startInfo.Argumanets = #"/f c:\test\wsp.ddf";
The issue here is that the commands you're passing in are arguments and not commands (which would have to be piped in through the StandardInput pipe). Fortunately, you can use the "/c" argument as mentioned here. I'm not sure if it will work with the "+" operator.
Note, as someone else mentioned, you should also set the working directory using the available property or your program will fail if not run with a "C:" working directory.
you have to do run shell commands from C#
string strCmdText;
strCmdText= "/C copy /b Image1.jpg + xyz.rar Image2.jpg"; System.Diagnostics.Process.Start("CMD.exe",strCmdText);
**EDIT:**
This is to hide the cmd window.
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C copy /b Image1.jpg + xyz.rar Image2.jpg";
process.StartInfo = startInfo;
process.Start();

how to hide windows host script c#.net

I need hide hide Windows host script after this code:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C slmgr.vbs /dlv";
process.StartInfo = startInfo;
process.Start();
Does anyone know how I could do this?
If you are talking about just hiding the window completely then you are missing setting the CreateNoWindow property.
startInfo.CreateNoWindow = true;
Instead of firing up an additional command-prompt, use cscript.exe to execute your VB script. If you do it this way you won't have to worry about the shell figuring out how to execute you vbs file and you won't get an additional command-line window.
startInfo.FileName = "cscript.exe";
startInfo.Arguments = "slmgr.vbs /dlv";
If the executable that is creating this process is not in the same directory as slmgr.vbs, you'll also need to set the full path to the file in the arguments, or set the working directory that the process runs in.
// Example path where your scripts could reside.
startInfo.WorkingDirectory = #"C:\PathToMyScripts\VBScripts\";
You probably want to redirect the output as well so you can log it somewhere.
Thank You for mr.BrutalDev
the second step
change startInfo.Arguments = "slmgr.vbs /dlv";
to startInfoent.Arguments = "C:\\Windows\\System32\\slmgr.vbs /dlv";

Commandline Arguments in C#

Hello again Stackoverflow community,
Today I am trying to execute an application with commandline parameters in C#, that not realy difficult like I tried
Process.Start(foldervar + "cocacola.exe", "pepsi.txt");
Cocacola.exe writes and Log in its current folder. In my commandline I write it manually like this
C:\myfolder>cocacola.exe pepsi.txt
Works wonderful but if I try it in C# a total fail.
I read that C# parses the command as C:\myfolder>cocacola pepsi.txt, without the ".EXE" ending. And I tested it manually without the ending, and this does not work.
Now, my question is what is the correct way to get C# executing it C:\myfolder>cocacola.exe pepsi.txt with the ".EXE"
use ProcessStartInfo
http://www.dotnetperls.com/process-start
example:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.WorkingDirectory=#"c:\someplace";
proc.StartInfo.FileName="cocacola.exe";
proc.StartInfo.Arguments="pepsi.txt";
proc.Start();
proc.WaitForExit();
here is docs on the StartInfo properties:
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.aspx
Try setting the StartInfo properties.
Process process = new Process();
process.StartInfo.FileName = #"C:\myfolder\cocacola.exe";
process.StartInfo.Arguments = #"C:\myfolder\pepsi.txt";
process.Start();
ProcessStartInfo has the WorkingDirectory property you should set to C:\myfolder
see: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory.aspx
You need to set the working directory first
string foldervar = #"C:\myfolder";
Process process = new Process();
process.StartInfo.WorkingDirectory = foldervar;
process.StartInfo.FileName = #"cocacola.exe";
process.StartInfo.Arguments = #"pepsi.txt";
process.Start();
Setting the WorkingDirectory is equivilent to cding into the proper directory before running programs. It's what relative paths are relative to.

Categories

Resources