代码如下:
Process myProcess = new Process();
myProcess.StartInfo.FileName = "cmd.exe";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardError = true;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
myProcess.StandardInput.WriteLine("cd C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools");
myProcess.StandardInput.WriteLine("vsvars32.bat"); if (radioButton1.Checked == true)
{
myProcess.StandardInput.WriteLine("cl " + filePath + " /EHsc");
}
if (radioButton2.Checked == true)
{
myProcess.StandardInput.WriteLine("csc " + filePath);
}
myProcess.StandardInput.WriteLine("exit"); string information = myProcess.StandardOutput.ReadToEnd();
textBox4.Text = information;
----------------------------------------------------------
程序执行之后textbox4的内容是:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.D:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cd C:\Program Files\Microsoft Visual Studio 8\Common7\ToolsD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>vsvars32.batD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cd G:\abc.cppD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cl G:\abc.cpp /EHscD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>exit---------------------------------------------------------
请问一下,在执行了
myProcess.StandardInput.WriteLine("cd C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools");
myProcess.StandardInput.WriteLine("vsvars32.bat");这两句之后,不是应该显示进入了 C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools文件夹吗?
怎么还是 D:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>呢?就算了出现命令错误,也应该有提示吧?怎么连个提示都没有?郁闷,求助中…… 谢谢……
Process myProcess = new Process();
myProcess.StartInfo.FileName = "cmd.exe";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardError = true;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
myProcess.StandardInput.WriteLine("cd C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools");
myProcess.StandardInput.WriteLine("vsvars32.bat"); if (radioButton1.Checked == true)
{
myProcess.StandardInput.WriteLine("cl " + filePath + " /EHsc");
}
if (radioButton2.Checked == true)
{
myProcess.StandardInput.WriteLine("csc " + filePath);
}
myProcess.StandardInput.WriteLine("exit"); string information = myProcess.StandardOutput.ReadToEnd();
textBox4.Text = information;
----------------------------------------------------------
程序执行之后textbox4的内容是:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.D:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cd C:\Program Files\Microsoft Visual Studio 8\Common7\ToolsD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>vsvars32.batD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cd G:\abc.cppD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cl G:\abc.cpp /EHscD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>exit---------------------------------------------------------
请问一下,在执行了
myProcess.StandardInput.WriteLine("cd C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools");
myProcess.StandardInput.WriteLine("vsvars32.bat");这两句之后,不是应该显示进入了 C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools文件夹吗?
怎么还是 D:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>呢?就算了出现命令错误,也应该有提示吧?怎么连个提示都没有?郁闷,求助中…… 谢谢……
解决方案 »
- 拿到winform源码后应该怎样学习?
- 页面传Date,变成UTC日期格式,如何处理???在线等~~~~~~~~~~~
- 请问c#中如何判断表达式是否为真!
- 把输入的数字 转换成大写
- 请问怎样解除数据绑定?
- 求助 :做网页时生成的.aspx编译时 可以通过 可是放到iis 中就不能访问了
- 我有两个aspx页面,想在父页面里通过.cs里的代码启动子页面,同时在子页面里自动触发html input=button的控件?!
- 我是想在一个类中弹的对话框(为什么MessageBox.Show("111")不行呀?)在线等~~
- 开发工具条
- 初学C#求助
- treeview的使用
- 可输入下拉框与在IE不同版本下显示问题
切到C盘
然后再 cd C:\Program Files\Microsoft Visual Studio 8\Common7\Tools
你只能在一行里执行吧.
C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools\\vsvars32.bat你都
CreateNoWindow = true;
哪来的提示?
/// <summary>
/// 执行DOS命令,返回DOS命令的输出
/// </summary>
/// <param name="dosCommand"> dos命令 </param>
/// <param name="milliseconds"> 等待命令执行的时间(单位:毫秒),假如设定为0,则无限等待 </param>
/// <returns> 返回输出,假如发生异常,返回空字符串 </returns>
public static string Execute(string dosCommand, int milliseconds)
{
string output = ""; //输出字符串
if (dosCommand != null && dosCommand != "")
{
Process process = new Process(); //创建进程对象
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe"; //设定需要执行的命令
startInfo.Arguments = "/C " + dosCommand; //设定参数,其中的“/C”表示执行完命令后马上退出
startInfo.UseShellExecute = false; //不使用系统外壳程序启动
startInfo.RedirectStandardInput = false; //不重定向输入
startInfo.RedirectStandardOutput = true; //重定向输出
startInfo.CreateNoWindow = true; //不创建窗口
process.StartInfo = startInfo;
try
{
if (process.Start()) //开始进程
{
if (milliseconds == 0)
process.WaitForExit(); //这里无限等待进程结束
else
process.WaitForExit(milliseconds); //这里等待进程结束,等待时间为指定的毫秒
output = process.StandardOutput.ReadToEnd();//读取进程的输出
}
}
catch
{
}
finally
{
if (process != null)
process.Close();
}
}
return output;
}
可以用System.Diagnostics.Process.Start(cmd)方法
C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools\\vsvars32.bat
也是没有反应虽然我是
CreateNoWindow = true;
可是我把
string information = myProcess.StandardOutput.ReadToEnd();
textBox4.Text = information;
标准输出的内容放到textbox中了~
谢谢ZYQDuron ~