帮助在Web表单中运行命令行

时间:2011-02-10 02:49:56

标签: c# asp.net cmd

我想做一个自动测试系统,它允许我自动运行批处理文件。现在程序是:

  1. 运行cmd.exe
  2. 输入“antc”
  3. 我想要一个按钮,这样一旦用户点击它,上面的过程就会自动运行。

    我已经做了一些事情,它允许我打开cmd.exe,如下所示:

    protected void Button1_Click(object sender, EventArgs e)
    {
    
        System.Diagnostics.Process process1 = new System.Diagnostics.Process();
        process1.StartInfo.WorkingDirectory = Request.MapPath("~/");
        process1.StartInfo.FileName = Request.MapPath("CMD.EXE"); 
        process1.Start(); 
    }
    

    感谢和问候

2 个答案:

答案 0 :(得分:1)

问题是什么?您也可以直接启动批处理文件,无需先启动CMD.EXE。如果您需要让用户在关闭窗口前按一个键,请使用PAUSE命令结束批处理文件。

编辑:抱歉,我没有注意到“网络表单”部分。所以现在我的问题是:你想要发生什么?您将从Web表单在服务器上运行批处理。但是,您想要在Web浏览器中显示任何内容吗?你到底想要发生什么?

<强> EDIT2:

以下是我所拥有的代码:

Process proc = new Process();

proc.StartInfo.FileName = "c:\\whatever\\executable.exe";
proc.StartInfo.Arguments = "-parameter -parameter -etc";
proc.StartInfo.UseShellExecute = false; // You may or may not need this

// For sure you need this
proc.StartInfo.RedirectStandardOutput = true;

// You may not need this
proc.StartInfo.RedirectStandardError = true;

proc.Start();

// For sure you need this
string procOutput = proc.StandardOutput.ReadToEnd();

// You may not need this
string procError = proc.StandardError.ReadToEnd();

此时,procOutput包含进程的完整控制台输出(批处理文件)。

答案 1 :(得分:1)

这应该与设置process1.StartInfo.Arguments = "antc";一样简单(假设您的包含路径排成一行或文件位于您的网络工作目录中(以及IIS has permission to run Process()