如何用批处理文件ftp?

use*_*683 47 windows ftp batch-file

我想要一个批处理文件ftp到服务器,读出一个文本文件,然后断开连接.服务器需要用户和密码.我试过了

@echo off
pause
@ftp example.com
username
password
pause
Run Code Online (Sandbox Code Playgroud)

但它从未登录过.我怎样才能让它发挥作用?

Out*_*ier 55

0x90h的答案帮了很多...

我把这个文件保存为u.ftp:

open 10.155.8.215 
user
password
lcd /D "G:\Subfolder\"
cd  folder/
binary
mget file.csv
disconnect
quit
Run Code Online (Sandbox Code Playgroud)

然后我运行了这个命令:

ftp -i -s:u.ftp
Run Code Online (Sandbox Code Playgroud)

它有效!!!

非常感谢:)

  • 如果你想看到上传或下载的进度,请在`binary`之后添加行`hash` (3认同)
  • 如果他的回答对你有很大帮助,请将他的回答标记为已选! (2认同)

小智 46

使用Windows FTP客户端,您可以使用该-s:filename选项指定要运行的FTP客户端的脚本.该文档特别指出,您不应尝试使用<字符将输入传输到FTP客户端.

脚本的执行将立即开始,因此它适用于用户名/密码.

但是,此设置的安全性值得怀疑,因为您现在拥有FTP服务器的用户名和密码,任何决定查看批处理文件的人都可以看到.

无论哪种方式,您都可以从批处理文件中动态生成脚本文件,然后将其传递给FTP客户端,如下所示:

@echo off

REM Generate the script. Will overwrite any existing temp.txt
echo open servername> temp.txt
echo username>> temp.txt
echo password>> temp.txt
echo get %1>> temp.txt
echo quit>> temp.txt

REM Launch FTP and pass it the script
ftp -s:temp.txt

REM Clean up.
del temp.txt
Run Code Online (Sandbox Code Playgroud)

servername,usernamepassword替换为您的详细信息,批处理文件将生成脚本temp.txt使用脚本启动ftp,然后删除脚本.

如果您始终获得相同的文件,则可以%1使用文件名替换.如果不是,您只需启动批处理文件并提供要作为参数获取的文件的名称.


Mar*_*iss 11

这是一个旧帖子,但另一种方法是使用命令选项:

ftp -n -s:ftpcmd.txt
Run Code Online (Sandbox Code Playgroud)

-n将禁止初始登录,然后文件内容将是:(用您的FTP站点url替换127.0.0.1)

open 127.0.0.1
user myFTPuser myftppassword
other commands here...
Run Code Online (Sandbox Code Playgroud)

这避免了单独行上的用户/密码


Las*_*sse 6

您需要在文本文件中编写ftp命令,并将其作为ftp命令的参数提供,如下所示:

ftp -s:filename
Run Code Online (Sandbox Code Playgroud)

更多信息请访问:http://www.nsftools.com/tips/MSFTP.htm

我不确定它是否适用于用户名和密码提示.


Not*_*tMe 5

批处理文件的每一行都将被执行; 但只有在前一行完成之后.在您的情况下,一旦它到达ftp行,ftp程序将启动并接管用户输入.当它关闭时,其余的行将执行.这意味着用户名/密码永远不会发送到FTP程序,而是在ftp程序关闭后将自动送到命令提示符.

相反,您需要在ftp命令行上传递所需的一切.就像是:

@echo off
echo user MyUserName> ftpcmd.dat
echo MyPassword>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo put %1>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat SERVERNAME.COM
del ftpcmd.dat
Run Code Online (Sandbox Code Playgroud)


Osw*_*ald 5

使用

ftp -s:FileName 
Run Code Online (Sandbox Code Playgroud)

Windows XP Professional产品文档中所述

您必须代替FileName指定的文件名必须包含要发送到服务器的FTP命令。这些命令包括

  • 打开计算机[端口]以连接到FTP服务器,
  • 用户UserName [Password] [Account]以通过FTP服务器进行身份验证,
  • 获取RemoteFile [LocalFile]来检索文件,
  • 退出以结束FTP会话并终止ftp程序。

Ftp子命令下可以找到更多命令。