如何从命令行FTP多个文件?


25

我想通过FTP传输目录的内容,但似乎找不到使用通配符的正确方法。看来这是一件常事。我的整体方法错误吗?

该命令是

ftp -s:"C:\Scripts\ftp01" ftpserver.domain.com

调用的脚本如下。根据billinkc更新。

username
password
ascii
cd "/destinationfolder"
lcd "C:\Backup"
mput *.bak
close
quit

脚本启动,没有文件被复制,FTP会话保持打开状态。

230 User username Logged in Successfully
ftp> ascii
200 TYPE Command OK A
ftp> cd "/destinationfolder"
250 Directory successfully changed to "/destinationfolder"
ftp> lcd "C:\Backup"
Local directory now C:\Backup.
ftp> mput *.bak
mput 9829980.bak? close
mput 6406766.bak? quit
ftp>
ftp>

结论

我需要添加标志以禁止使用PROMPT命令:

ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com

Answers:


36

在发出mput命令之前,发出prompt命令以禁用交互模式。一旦关闭,它就不会要求您确认mput(或mget)的每个文件。


3
对于那些想知道“此prompt命令的语法是什么”的人,您只需键入“提示”,它就会将提示从true切换为false。
Noumenon

2
禁用交互式提示的另一种方法是使用命令本身-i上的标志ftp(例如ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com)。该文档-i选项描述为:“在多次文件传输期间关闭交互式提示。”
杰西·韦伯

3

我从未尝试使用本地文件夹的路径名,但是通过更改本地目录(lcd)来做到这一点:

username
password
ascii
cd "/destinationfolder"
lcd Backup
mput *.bak
close
quit


1

使用mput命令放置多个文件。


1
是的,这就是我使用的
mmcglynn 2011年

在防火墙后面(尤其是SOHO或便宜的企业级设备)?ftpWindows 内置的不支持PASV模式,因此传输将挂起并且永远不会完成。
克里斯·S

1

如果您具有管理员权限,则可以安装ncftpput。它易于使用,非常适合递归FTP上传。递归传输的开关为-R

该软件包含在大多数Linux发行版中。对于Windows,可通过Cygwin安装。


1

正如Tim Haegele提到的,如果您能够并愿意安装ncftp,则ncftp在Linux上可以非常顺利地完成此操作:

sudo apt-get install ncftp
ncftp -R ftpserver.domain.com . /Scripts/ftp01

0

这是我使用过的脚本,对我有用。

对于ftp1.bat(脚本):

ftp -i -s:\tmp\ftp.txt

对于ftp.txt(脚本):

Open ip
username
password
prompt
lcd C:\YourFolder\YourFolder
binary
cd /DestinationFolder
prompt
mput *.bak
cd ..
disconnect
quit

也许有些部分不是必需的,但是我正在使用它,因为它对我有用,希望对您有所帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.