C#操作命令行,代码应该没有错误:
Process newProcess = new Process();
newProcess.StartInfo.FileName = exeName;
newProcess.StartInfo.UseShellExecute = false;
newProcess.StartInfo.CreateNoWindow = true;
newProcess.StartInfo.RedirectStandardOutput = true;
newProcess.StartInfo.RedirectStandardInput = true;
newProcess.StartInfo.RedirectStandardError = true;
try
{
newProcess.Start();
foreach (string item in argsLines)
{
newProcess.StandardInput.WriteLine(item);
}
newProcess.StandardInput.WriteLine("exit");
output = newProcess.StandardOutput.ReadToEnd();
newProcess.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}但是现在有一个问题,就是我其中有些命令是启动另外一个软件下的,
如该系列命令为:cd d:\\,cd txtdo\m3\bin,tt930
tt930是txtdo软件中的一个操作命令,但是在C#中执行到tt930的时候程序就无法返回数据流了,但是在开始--》运行里面又是可以执行的
百思不得其解,希望有高手释疑,另外我想到的是可能原因是这个软件连接了公司的服务器,是不是在C#也要进行远程连接才能够链接到并且返回数据,欢迎讨论...
Process newProcess = new Process();
newProcess.StartInfo.FileName = exeName;
newProcess.StartInfo.UseShellExecute = false;
newProcess.StartInfo.CreateNoWindow = true;
newProcess.StartInfo.RedirectStandardOutput = true;
newProcess.StartInfo.RedirectStandardInput = true;
newProcess.StartInfo.RedirectStandardError = true;
try
{
newProcess.Start();
foreach (string item in argsLines)
{
newProcess.StandardInput.WriteLine(item);
}
newProcess.StandardInput.WriteLine("exit");
output = newProcess.StandardOutput.ReadToEnd();
newProcess.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}但是现在有一个问题,就是我其中有些命令是启动另外一个软件下的,
如该系列命令为:cd d:\\,cd txtdo\m3\bin,tt930
tt930是txtdo软件中的一个操作命令,但是在C#中执行到tt930的时候程序就无法返回数据流了,但是在开始--》运行里面又是可以执行的
百思不得其解,希望有高手释疑,另外我想到的是可能原因是这个软件连接了公司的服务器,是不是在C#也要进行远程连接才能够链接到并且返回数据,欢迎讨论...
如果是的话。不妨分开执行。
newProcess.StartInfo.FileName = "cmd.exe";
newProcess.StartInfo.UseShellExecute = false;
newProcess.StartInfo.CreateNoWindow = true;
newProcess.StartInfo.RedirectStandardOutput = true;
newProcess.StartInfo.RedirectStandardInput = true;
newProcess.StartInfo.RedirectStandardError = true;
try
{
newProcess.Start();
newProcess.StandardInput.WriteLine("cd d:\\,cd txtdo\m3\bin,tt930");
newProcess.StandardInput.WriteLine( "exit ");
output = newProcess.StandardOutput.ReadToEnd();
newProcess.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
试试
newProcess.StartInfo.FileName = exeName;
newProcess.StartInfo.UseShellExecute = false;
newProcess.StartInfo.CreateNoWindow = true;
newProcess.StartInfo.RedirectStandardOutput = true;
newProcess.StartInfo.RedirectStandardInput = true;
newProcess.StartInfo.RedirectStandardError = true;
try
{
newProcess.Start();
foreach (string item in argsLines)
{
newProcess.StandardInput.WriteLine(item);
}
newProcess.StandardInput.WriteLine( "exit ");
output = newProcess.StandardOutput.ReadToEnd();
newProcess.WaitForExit();
newProcess.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
} 试试看了。应该是还没有返回就结束了。
newProcess.StartInfo.FileName = "cmd.exe";
newProcess.StartInfo.UseShellExecute = false;
newProcess.StartInfo.CreateNoWindow = true;
newProcess.StartInfo.RedirectStandardOutput = true;
newProcess.StartInfo.RedirectStandardInput = true;
newProcess.StartInfo.RedirectStandardError = true;
try
{
newProcess.Start();
newProcess.StandardInput.WriteLine("cd d:\\");
newProcess.StandardInput.WriteLine("cd txtdo\m3\bin");
newProcess.StandardInput.WriteLine("tt930");
newProcess.StandardInput.WriteLine( "exit");
newProcess.StandardInput.Close();
output = newProcess.StandardOutput.ReadToEnd();
newProcess.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Avoid 的根本就不能这样执行
lye2000000_super
昵称:我自横刀香甜笑 的也不行,我早就加过newProcess.WaitForExit()了,但是前面output都获取不了,所以不是这个原因
IThurricane 可以,非常感谢