C#调用cmd执行ftp命令

时间:2022-09-02 20:20:04

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()传入参数即可实现。

对于这点 有什么好的解决办法么?