日期:2014-05-17  浏览次数:20611 次

asp.net程序与bat文件,脱离vs就无法执行bat
需求:bat文件文件里面写了一个重启某个服务的操作,我之所以不用ServiceController类,是因为不仅仅是控制服务,还有其他功能操作
实现:我在一个页面程序里面调用用Process类来执行这个.bat文件
注意:下面代码是在vs2012运行能实现我的需求,但将程序发布在本地IIS和服务器IIS无效

    /// <summary>
    /// 按钮事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnGetTest_Click(object sender, EventArgs e)
    {
        GetTest();
    }
    private void GetTest()
    {
        if (File.Exists( txtSName.Text.Trim()))
        {
            Process consoleProcess = new Process();

            //获取文件路径 比如 c:\PS\app0.bat,   
            string batFilePath = txtSName.Text;

            //我想让程序执行这个bat文件,停某个服务,app0.bat文件内容为:net stop appMgmt
            consoleProcess.StartInfo.FileName = batFilePath;
            consoleProcess.StartInfo.UseShellExecute = false;
            consoleProcess.StartInfo.RedirectStandardInput = true;
            consoleProcess.StartInfo.RedirectStandardOutput = true;

            consoleProcess.Start();
            StreamReader streamReader = consoleProcess.StandardOutput;
            txtResult.Text = streamReader.ReadToEnd();//输出结果
        }
        else
        {
            txtResult.Text = "文件不存在";
        } 
    }

运行效果

---------------------------------------
将程序发布在本地IIS和服务器IIS打开页面,就输出bat里面的文本内容,没执行


补充:这就是进程、线程的问题吗?
asp.net bat asp.net执行bat