如何通过一个命令行从 FTP 站点下载文件而无需用户交互(Windows)

如何通过一个命令行从 FTP 站点下载文件而无需用户交互(Windows)

我知道有一个 FTP 命令可以在 Windows 上从命令行运行,它会从 FTP 站点下载文件。用户 + 密码在“那个”单行 cmd 中指定。这些选项 + 密码密码应该在该命令行上。

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo [email protected]>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt

答案1

尝试这个:批处理文件 - 无人值守 FTP 下载

WGET ftp://ftp.mydomain.com/path/file.ext  

用于匿名下载

或者:

WGET ftp://user:[email protected]/path/file.ext  

当需要身份验证时。


正如@XavierStuvw 通过编辑和评论指出的那样,在 Linux 中切换WGET到小写wget是可行的。

wget ftp://user:[email protected]/path/file.ext

答案2

我找到了方法:

echo open 192.168.0.1 >> ftp &echo user admin w00t >> ftp &echo binary >> ftp &echo get file.zip >> ftp &echo bye >> ftp &ftp -n -v -s:ftp &del ftp

答案3

请注意,您可以使用 /? 开关询问 DOS 中命令的语法。例如:

C:\>ftp /?

与运行 FTP 服务器服务的计算机之间传输文件
(有时称为守护进程)。Ftp 可以交互使用。

FTP [-v] [-d] [-i] [-n] [-g] [-s:文件名] [-a] [-A] [-x:发送缓冲区] [-r:接收缓冲区
fer] [-b:异步缓冲区] [-w:窗口大小] [主机]

  -v 抑制显示远程服务器响应。
  -n 在初始连接时抑制自动登录。
  -i 关闭多文件期间的交互式提示
                  轉移。
  -d 启用调试。
  -g 禁用文件名通配(参见 GLOB 命令)。
  -s:filename 指定包含 FTP 命令的文本文件;
                  FTP 启动后命令将自动运行。
  -a 绑定数据连接时使用任意本地接口。
  -A 以匿名身份登录。
  -x:send sockbuf 覆盖默认的 SO_SNDBUF 大小 8192。
  -r:recv sockbuf 覆盖默认的 SO_RCVBUF 大小 8192。
  -b:异步计数覆盖默认的异步计数 3
  -w:windowsize 覆盖默认的传输缓冲区大小 65535。
  host 指定远程主机名或 IP 地址
                  要连接的主机。

笔记:
  - mget 和 mput 命令采用 y/n/q 表示是/否/退出。
  - 使用 Control-C 中止命令。

就您而言,您需要使用 -s 开关向其提供脚本,包括登录响应。

例如:

  1. 创建一个脚本文件(c:\scriptfile.txt),其内容如下:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. 使用 -s 开关执行 ftp 并指定脚本文件名

    C:\>ftp -s:c:\scriptfile.txt
    

答案4

尝试一下curl,它功能强大并且开箱即用(win10)。

curl --user ftpusername:ftpuserpass -o outputdirname\test.txt  ftp://host/test.txt

相关内容