我在使用C#调用cmd的时候,只能操作系统自带的命令,而第三方程序的命令无法操作,比如我要操作”java -version“ ,却没有任何反应,而如果操作系统自带的命令,比如ping baidu.com,ipconfig等等这些命令就没有问题,以下是我的代码!我想实现C#调用cmd的时候,可以让其去执行第三方的命令,另外我已经明确第三方程序已经配置好系统环境变量,平时做Java开发都是配置好的,直接打开cmd是可以直接执行的,但在C#中的cmd调用时却不可以
process.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
process.StartInfo.CreateNoWindow = true; //是否在新窗口中启动该进程的值 (不显示程序窗口)
process.StartInfo.RedirectStandardInput = true; // 接受来自调用程序的输入信息
process.StartInfo.RedirectStandardOutput = true; // 由调用程序获取输出信息
process.StartInfo.RedirectStandardError = true; //重定向标准错误输出
process.StartInfo.FileName = "cmd.exe";//调用cmd
process.Start(); // 启动程序
** process.StandardInput.WriteLine("ping baidu.com -t"); //向cmd窗口发送输入信息
**
process.StandardInput.WriteLine("java -version"); //这里改成java -version 包括其他第三方的比如ffmpeg都不行
process.StandardInput.AutoFlush = true;
process.StandardInput.WriteLine("exit");
StreamReader reader = process.StandardOutput;//获取exe处理之后的输出信息
string curLine = reader.ReadLine(); //获取错误信息到error
while (!reader.EndOfStream)
{
if (!string.IsNullOrEmpty(curLine))
{
Console.WriteLine(curLine);
}
curLine = reader.ReadLine();
}
reader.Close(); //close进程
process.WaitForExit(); //等待程序执行完退出进程
process.Close();
下面这是正常启动cmd时的结果