但是,用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");
Process.Start(@"cmd /k g:\test\abaqus job=0713 inter");
#2
嗯,谢谢先,我也看到很多人说这样写,但是,我这样写,完全没有反应。
我是使用abaqus求解器打开位于test文件夹中的0713.inp文件。不知道怎么弄好了
我是使用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完全无显示内容,怎么解?
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为输入流
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");
Process.Start(@"cmd /k g:\test\abaqus job=0713 inter");
#2
嗯,谢谢先,我也看到很多人说这样写,但是,我这样写,完全没有反应。
我是使用abaqus求解器打开位于test文件夹中的0713.inp文件。不知道怎么弄好了
我是使用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完全无显示内容,怎么解?
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为输入流
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为输入流