您的位置:首页 > 编程语言 > C#

用c#中实现的,调用cmd来执行bcp的代码

2008-02-22 12:59 876 查看
用c#中实现,调用cmd来执行bcp的代码,大家共享!
引用空间:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
            string Conn = "data source=192.168.0.1;initial catalog=Test;user id=sa;password=1";
            SqlConnection sqlConn = new SqlConnection(Conn);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = sqlConn;
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sqlConn.Open();
            cmd.CommandText = "Select * from Files";
            DataSet ds = new DataSet();
            sda.Fill(ds);

            if(ds.Tables[0].Rows.Count>0)
            {
                string BcpExec = "";
                for(int i=0;i<ds.Tables[0].Rows.Count;i++)//循环取本地文件名
                {           
                    BcpExec = @"bcp Test..Data in D:/test/";
                    BcpExec += ds.Tables[0].Rows[i]["path"].ToString();
                    BcpExec += " -S192.168.0.1 -Usa -P1 -c -t,";//组合bcp命令
                    Response.Write(ExeCommand(BcpExec));//执行bcp命令并显示操作结果
                }
            }
        }

        /**//// <summary>
        /// 执行Cmd命令
        /// </summary>
        /// <param name="commandText"></param>
        /// <returns></returns>
        public static string ExeCommand(string commandText)
        {
            Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            string strOutput = null;
            try
            {
                p.Start();
                p.StandardInput.WriteLine(commandText);
                p.StandardInput.WriteLine("exit");
                strOutput = p.StandardOutput.ReadToEnd();
                p.WaitForExit();
                p.Close();
            }
            catch(Exception e)
            {
                strOutput = e.Message;
            }
            return strOutput;
        }

C#中利用process类调用外部程序以及执行dos命令
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();        //從輸出流取得命令執行結果


22 


23         }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息