首先,我进行了大量搜索以避免提出重复的问题。如果有的话我会立即删除这个问题。
网络上的所有解决方案都建议像这样使用 Process.StartInfo
我不想运行批处理文件或 .exe。
我只想在cmd上运行一些命令,例如
msg /server:192.168.2.1 console "foo"
或
ping 192.168.2.1
如果有则返回结果。
我怎样才能做到这一点?
那些命令仍然是exe文件,你只需要知道它们在哪里即可。例如:
c:\windows\system32\msg.exe /server:192.168.2.1 console "foo"
c:\windows\system32\ping.exe 192.168.2.1
执行此操作的唯一正确方法是使用 Process.Start。这在这个问题中得到了充分的证明,它本身就是其他两个问题的重复。
但是,正如 DavidG 所说,这些命令都是 exe 文件,你可以这样运行它们。
显然,我找到了答案
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。
感谢您的贡献。