C#调用DOS命令方法

作者:网络 来源:佚名 更新时间:2008-05-07 13:27:23 点击:

c#调用dos命令
我想编一个汇编语言编辑器,但在调用masm.exe的时候,无法得到它的运行信息。代码如下:
process p = new process();
p.startinfo .workingdirectory ="e:\\";
p.startinfo.filename = "masm.exe";
p.startinfo.arguments="test.asm;";
p.startinfo.useshellexecute = false;
p.startinfo.redirectstandardoutput = true;
p.start ();
string output = p.standardoutput.readtoend();
p.waitforexit ();
//textbox1.text="aaa";
textbox1.text =output;

textbox1没有问题,显示别的可以,但是显示不出来运行时屏幕上显示的信息,只是一片空白。
而且,当我在系统下运行cmd进入dos时,运行masm test.asm; 有时候无任何显示,有时候却有编译信息,不知道为什么。运行其它可执行文件也出现过这样的情况。不知道和上面的问题有没有联系呢?

 

命令就确实没有输出。

process p = new process();
p.startinfo .workingdirectory ="c:\\";
p.startinfo.filename = "ping.exe";
p.startinfo.arguments="www.sina.com.cn";
p.startinfo.useshellexecute = false;
p.startinfo.redirectstandardoutput = true;
p.startinfo.createnowindow = true;
p.start ();
string output = p.standardoutput.readtoend();
p.waitforexit ();
messagebox.show(output);

 

c#中运行dos命令如何隐藏dos界面
一、.net:
p = new process();
p.startinfo.filename = "cmd.exe";
// 这里是关键点,不用shell启动/重定向输入/重定向输出/不显示窗口
p.startinfo.useshellexecute = false;
p.startinfo.redirectstandardinput = true;
p.startinfo.redirectstandardoutput = true;
p.startinfo.createnowindow = true;
p.start();
p.standardinput.writeline("ping 127.0.0.1");// 向cmd.exe输入command
p.standardinput.writeline("exit");
p.waitforexit(60000);
string s = p.standardoutput.readtoend();// 得到cmd.exe的输出
p.close();
?
二、win32:
startupinfo si;//这里的含义太多就不一一说了,自己查msdn吧
si.cb = sizeof(si);
createprocess( "cmd.exe" , null , null , null , false , create_no_window , null , null , &si , null );

 

 

 

 

 

 

c#中的process类可方便的调用外部程序,所以我们可以通过调用cmd.exe程序

加入参数 "/c " + 要执行的命令来执行一个dos命令
(/c代表执行参数指定的命令后关闭cmd.exe /k参数则不关闭cmd.exe)

1 private string runcmd(string command)
2 {
3 //實例一個process類,啟動一個獨立進程
4 process p = new process();
5
6 //process類有一個startinfo屬性,這個是processstartinfo類,包括了一些屬性和方法,下面我們用到了他的幾個屬性:
7
8 p.startinfo.filename = "cmd.exe"; //設定程序名
9 p.startinfo.arguments = "/c " + command; //設定程式執行參數
10 p.startinfo.useshellexecute = false; //關閉shell的使用
11 p.startinfo.redirectstandardinput = true; //重定向標準輸入
12 p.startinfo.redirectstandardoutput = true; //重定向標準輸出
13 p.startinfo.redirectstandarderror = true; //重定向錯誤輸出
14 p.startinfo.createnowindow = true; //設置不顯示窗口
15
16 p.start(); //啟動
17
18 //p.standardinput.writeline(command); //也可以用這種方式輸入要執行的命令
19 //p.standardinput.writeline("exit"); //不過要記得加上exit要不然下一行程式執行的時候會當機
20
21 return p.standardoutput.readtoend(); //從輸出流取得命令執行結果