【问题标题】:batch ftp hanging on get批处理 ftp 挂在 get 上
【发布时间】:2014-10-26 18:09:46
【问题描述】:

您好,我正在尝试编写一个 MS Dos 批处理文件,该文件登录到 ftp 服务器并下载文件

ftp 托管在 IIS 中,但不受我的直接控制(第 3 方)。

我的脚本如下(文件名ftpcmd.dat)

user bob
mypassword
get /foldrname/export.txt c:\export.txt 
quit

然后它会像这样执行

ftp -n -s:ftpcmd.dat ftp.myserver.co.za

问题是get命令总是卡死,ftp这样响应

501 Server cannot accept argument.
150 Opening ASCII mode data connection.

我尝试在命令提示符下手动执行此操作,结果完全相同。

我可以使用 FileZilla 之类的工具来做到这一点,我注意到它会切换到被动模式,所以为了模拟这一点,我尝试在登录后添加它

quote pasv

这会切换到被动模式,但同样的问题仍然存在。

注意 - 我无法让服务提供商进行任何配置更改。 另请注意 - 使用 filezilla 客户端可以完美运行

谢谢!

【问题讨论】:

  • 您是否尝试使用其他工具获取文件?例如 wget:wget ftp://user:password@ftp.myserver.co.za/foldrname/export.txt 或者,您可以获取 wireshark,并嗅探 filezilla 发送的确切命令。然后只需将它们放在 ftpcmd.dat 中还有一个注释:上次我使用 ftp 脚本时,它是这样的:open ftp.server.com user password ... disconnect bye
  • wiresharks 的输出有点超出我的想象。我可以看看 wget,但是我的下一个功能是删除一个文件,然后放入,我认为这都超出了 wget 的范围?
  • get 命令之前更改文件夹怎么样?喜欢:cd foldername 然后get export.txt
  • 也试过了。没有运气。我现在正在尝试 Curl

标签: batch-file command-line ftp


【解决方案1】:

试试这个脚本:

open ftp.myserver.co.za
bob
mypassword
binary
lcd "c:\"
get /foldrname/export.txt 
quit

这样执行:

ftp -i -s:ftpcmd.dat 

请注意,您需要权限才能写入 c:\

【讨论】:

    【解决方案2】:

    我认为这基本上是@rostok 所说的一部分,但通常我会使用

    user bob mypassword
    get /foldrname/export.txt c:\export.txt 
    quit
    

    你也可以调用它

    open ftp.myserver.co.za
    user bob mypassword
    get /foldrname/export.txt c:\export.txt 
    quit
    

    确保 foldrname 确实不在根目录下。如果你

    cd foldrname
    

    这会出错吗? cd \foldrname 工作还是出错?你能成功使用lcd c:\export.txt?吗?可能只是路径问题。

    请务必在创建脚本之前手动尝试,以便准确了解每一步发生的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      相关资源
      最近更新 更多