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()传入参数即可实现。
对于这点 有什么好的解决办法么?