1. 程式人生 > >C#呼叫cmd執行ftp命令

C#呼叫cmd執行ftp命令

1、C#執行cmd命令

  public string ExeCommand()
        {
            Process p = new Process();   //例項一個Process類,啟動一個獨立程序

            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;    //關閉Shell的使用
            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("ftp -is:\"E:\\aolixia\\ftpcmd.in\ " 134.*.*.*");
                p.StandardInput.WriteLine("exit");
                StreamReader reader = p.StandardOutput;//擷取輸出流
                string line = reader.ReadLine();//每次讀取一行
                while (!reader.EndOfStream)
                {
                    tbResult += line + "\n";
                    line = reader.ReadLine();
                }              

 
//                p.StandardInput.WriteLine("ping 134.224.48.78");

//                p.StandardInput.WriteLine("exit");
//                strOutput = p.StandardOutput.ReadToEnd();                
                p.WaitForExit();
                p.Close();
            }
            catch (Exception e)
            {
                strOutput = e.Message;
            }
            return strOutput;
        }

2、 由於在執行cmd的ftp命令時,需要使用者輸入使用者名稱和密碼,這個一直沒找到一個很好的方法。 

 看到KingGoo技術部落格的《dos通過呼叫配置檔案自動執行FTP操作》 

配置一個ftpcmd.in檔案

檔案內容是

ftpuser

ftppass

pwd                     (檢視當前目錄)

cd tlh                   (轉到tlh目錄下)

dir

bye

第一二行分別是帳號密碼,後面接著是您需要執行的ftp命令 

cmd下執行如下命令

ftp -is:"E:\aolixia\ftpcmd.in " 134.*.*.*

3、用以上的ExeCommand()函式可以執行ftp命令。但是還有一些問題希望得到提點。    

就是,由於ftp下的命令是固定寫在了.in檔案中,但是在程式中,我可能需要呼叫該函式上傳檔案,

並重命名ftp上的某個檔案。 那我只能去修改.in檔案,而不能通過對ExeCommand()傳入引數即可實現。

對於這點 有什麼好的解決辦法麼?