首先,我搜索了很多,以避免提出重复的问题。如果有,我会立即删除这个问题。
网络上的所有解决方案都建议使用像这样的Process.StartInfo
How To: Execute command line in C#, get STD OUT results
我不想运行批处理文件或.exe。
我只想在cmd上运行一些命令,如
msg /server:192.168.2.1 console "foo"
或ping 192.168.2.1
并返回结果(如果有)。
我该怎么做?
答案 0 :(得分:0)
这些命令仍然是exe文件,你只需要知道它们在哪里。例如:
c:\windows\system32\msg.exe /server:192.168.2.1 console "foo"
c:\windows\system32\ping.exe 192.168.2.1
答案 1 :(得分:0)
执行此操作的唯一正确方法是使用Process.Start。这在this question中得到了充分的证明,{{3}}本身就是另外两个的重复。
然而,正如DavidG所说,命令都是exe文件,你可以这样运行它们。
答案 2 :(得分:-1)
显然,我找到了答案
while (true)
{
Console.WriteLine("Komut giriniz.");
string komut = Console.ReadLine();
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" + komut;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
process.StartInfo = startInfo;
Console.WriteLine(process.Start());
string line = "";
while (!process.StandardOutput.EndOfStream)
{
line = line + System.Environment.NewLine + process.StandardOutput.ReadLine();
// do something with line
}
Console.WriteLine(line);
Console.ReadLine();
}
似乎可以运行包含命令的参数的cmd.exe。
感谢您的贡献。