【发布时间】:2015-09-10 12:59:25
【问题描述】:
编辑 3:The solution
编辑 2:myProcess.WaitForInputIdle(); 可以帮忙吗?
编辑:我刚刚发现这些文件甚至都没有下载。 我只是忘了删除旧的。请帮忙:/
所以我使用此代码从 ftp 服务器下载文件:
Process p = new Process();
ProcessStartInfo info = new ProcessStartInfo();
info.WindowStyle = ProcessWindowStyle.Hidden;
info.FileName = "ftp.exe";
info.RedirectStandardInput = true;
info.UseShellExecute = false;
p.StartInfo = info;
p.Start();
using (StreamWriter sw = p.StandardInput)
{
if (sw.BaseStream.CanWrite)
{
sw.WriteLine("open " + folder.server);
sw.WriteLine(folder.cred.user);
sw.WriteLine(folder.cred.password);
sw.WriteLine("get " + file);
sw.WriteLine("close");
sw.WriteLine("quit");
}
}
它工作得很好,但最后我得到一个控制台输出,上面写着User (*server*:(none)): Password:,我必须输入一些东西才能继续我的程序。
但是,无论我输入什么都会得到响应:
User anonymous cannot log in.
有人知道我怎样才能避免这种情况吗?
我也尝试过跳过它,但 sw.WriteLine(" "); 和 p.Close() 似乎都不起作用。
我能做什么?
【问题讨论】:
-
为什么不直接使用
Net.FtpWebRequest? -
不——因为我在这里做的是
Net.FtpWebRequest的解决方法。我必须使用本机 Windows ftp 客户端。我知道这很愚蠢。 -
我们不能帮助解决最初的问题,或者建议另一个支持您需求的框架吗?处理交互式应用程序不是可行的方法。
-
或者使用命令文件调用 FTP.EXE
-
嗯..我尝试的是备份一个“旧的”ZyWall 2 plus,它不会让我使用 FtpWebRequest(500:未知命令/520:命令未实现)。机器分步教程希望我完全按照我的代码现在所做的工作。