为什么我的FTP输出文件是空白的?

在Windows命令提示符下,我有FTPd到Windows Web服务器。 我可以get一个文件,我可以看到一个目录列表与dir ,但我想保存在本地列表。

我试过dir > c:\somefile.txt 文件被创build,但是它是空白的 。 同样的事情,如果我做ls > c:\somefile.txt

当我从一个Linux的盒子FTP时,结果是一样的。

FTP发回以下内容:

 200 PORT命令成功
 150打开/ bin / ls的ASCII模式数据连接
 226传输完成

这可能是因为FTP.exe控制了shell。 因此,由cmd.exe处理的redirect不起作用。

你可以做的是使用-s:filename选项,并将整个ftp输出redirect到一个文件。 它会包含更多你想要的,但你可以在以后照顾。

或者,也许,寻找其他具有此function的FTP客户端(我不知道有任何)。

Igal Serban的答案是正确的。 尝试这个,

 ftp -s:ftp.txt > ftp.log 2>&1 

其中http://ftp.txt是一个脚本,只是一个命令列表,例如,

 help pwd quit 

http://ftp.log将捕获输出。 添加2>&1表示您同时捕获标准输出 (标准输出)和标准错误 (来自http://ftp.exe的任何错误消息)。

您可以通过执行以下命令将dir列表放入本地文件中:

 dir [remote-directory] [local-file] 

在你的情况下,命令将是

 dir . c:\somefile.txt 

它不回答为什么问题,但是完成了你想要做的事情。

最简单的方法是打开计算机文件夹,您可以看到所有的驱动器。 这里你需要为ftp服务器创build一个快捷方式。 要做到这一点,在电脑文件夹的空白空间右键单击并添加networking位置点击它,并按照提示为您的networkingFTP服务器创build快捷方式。 如果你有密码或匿名的话。 你也可以给它一个名字。 它将出现在计算机文件夹的networking位置。 现在双击它。 要打开>查看,阅读或播放和编辑文件夹或其文件,您需要拖动>复制或将其移动到桌面。 完成后,可以将其移回原位。 这有点麻烦,但正在为我工​​作。 希望它可以帮助你们!

MartinBøgelund的答案补遗:

为什么问题(我假设的是“为什么最初的尝试做它做了什么”)是有趣的,而且当你正确的思考它的时候很简单:它是相同的dir [remote-directory] [local-file]语法,远程目录恰好是> 。 ftp客户端不是一个shell。 键入的命令不是shell命令。 它没有redirect操作符, >不是特殊字符。

是的,你可以在你的FTP服务器上有一个名为>的目录,只要你没有在Windows上运行。

在Windows中find的ftp.exe是一个早期的BSD ftp的副本。 它不知道Windows文件名的限制。 如果您告诉它get remotefile > ,它将尝试将远程文件的副本保存为名为>的本地文件,并且由于本地文件系统的限制而失败。

这里引起混淆的一个主要原因是FTP服务器接收到一个LIST命令,其中>作为参数,用一个成功代码和一个空的回复体来回应,而不是说“没有这样的文件”。

这并没有真正回答这个问题,但是你有没有考虑编写一个脚本来完成它,然后redirect脚本的输出呢?

http://support.microsoft.com/kb/96269

可能ftp服务器进程没有权限写入c :. 试试c:\ somedir \ somefile.txt

 #!/bin/bash -vx ftp -in bahugunazxc.com>>END_SCRIPT quote USER bipin quote PASS acs123 bin prompt off cd wbc/webr >>> ls END_SCRIPT 

保存这个文件。 比如我用dp.sh的名字保存了它。 之后运行命令:

 ./dp.sh > ftp.log