C#调用cmd执行命令的问题

时间:2022-09-02 23:35:10
正常操作:打开cmd后,手动输入 cd 可以打开文件夹,然后输入abaqus job=XX 就可以开始我的程序运行

但是,用C#调用cmd的时候,打开的cmd窗口毫无变化,也没有执行程序。。
代码如下,烦请指导:
            Process cmd = new Process();

            cmd.StartInfo.FileName = "cmd.exe";

            cmd.StartInfo.UseShellExecute = false; 

            cmd.StartInfo.RedirectStandardInput = true; 
            cmd.StartInfo.RedirectStandardOutput = true; 
            cmd.StartInfo.RedirectStandardError = true;

            cmd.StartInfo.CreateNoWindow = false;
            cmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

            cmd.Start(); 

            cmd.StandardInput.WriteLine("g:");
            cmd.StandardInput.WriteLine("cd TEST");
            cmd.StandardInput.WriteLine("abaqus job=0713 inter");
            cmd.WaitForExit();
            cmd.Close();

10 个解决方案

#1


直接
Process.Start(@"cmd /k g:\test\abaqus job=0713 inter");

#2


嗯,谢谢先,我也看到很多人说这样写,但是,我这样写,完全没有反应。
我是使用abaqus求解器打开位于test文件夹中的0713.inp文件。不知道怎么弄好了

#3


另外,有没有可以写出需要运行的cmd命令的方法?

#4


天知道abaqus的命令行用法。看着0713 inter也不是0713.inp啊。

#5


嗯,sorry ,菜鸟表述不清楚,那有没有一种方法,可以写入命令,和在cmd中写入一样?

#6


lz做一个.bat文件并将相关的cmd命令都写在里面。然后在程序里面用Process.Start去执行.bat文件。

#7


楼上好建议~

#8


问题解决了一部分,可以开始求解了,解决方法,加入            
cmd.StartInfo.WorkingDirectory = "g:\\TEST";
然后删掉            
cmd.StandardInput.WriteLine("g:");
cmd.StandardInput.WriteLine("cd TEST");
这两行。

新问题出现了,cmd完全无显示内容,怎么解?

#9


我又来自解了,           cmd.StartInfo.RedirectStandardOutput = true; 
输出被重定向了,当然没有输出。。。
感谢二位

#10


           p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = false;
            p.StartInfo.RedirectStandardInput = true;//重定向标准输入
            p.StartInfo.RedirectStandardOutput = true;//重定向标准输出
 
            p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
            //标准输出重定向至此  接收输出
 
            p.Start();
            input = p.StandardInput;//重定向输入
            p.BeginOutputReadLine();

input为输入流

#1


直接
Process.Start(@"cmd /k g:\test\abaqus job=0713 inter");

#2


嗯,谢谢先,我也看到很多人说这样写,但是,我这样写,完全没有反应。
我是使用abaqus求解器打开位于test文件夹中的0713.inp文件。不知道怎么弄好了

#3


另外,有没有可以写出需要运行的cmd命令的方法?

#4


天知道abaqus的命令行用法。看着0713 inter也不是0713.inp啊。

#5


嗯,sorry ,菜鸟表述不清楚,那有没有一种方法,可以写入命令,和在cmd中写入一样?

#6


lz做一个.bat文件并将相关的cmd命令都写在里面。然后在程序里面用Process.Start去执行.bat文件。

#7


楼上好建议~

#8


问题解决了一部分,可以开始求解了,解决方法,加入            
cmd.StartInfo.WorkingDirectory = "g:\\TEST";
然后删掉            
cmd.StandardInput.WriteLine("g:");
cmd.StandardInput.WriteLine("cd TEST");
这两行。

新问题出现了,cmd完全无显示内容,怎么解?

#9


我又来自解了,           cmd.StartInfo.RedirectStandardOutput = true; 
输出被重定向了,当然没有输出。。。
感谢二位

#10


           p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = false;
            p.StartInfo.RedirectStandardInput = true;//重定向标准输入
            p.StartInfo.RedirectStandardOutput = true;//重定向标准输出
 
            p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
            //标准输出重定向至此  接收输出
 
            p.Start();
            input = p.StandardInput;//重定向输入
            p.BeginOutputReadLine();

input为输入流