我正在使用Windows批处理编程来创建与ftp主机的ftp连接,并自动将文件上传到该主机。但是,ftp命令没有参数来获取命令中的用户名和密码,我必须在后续命令中输入它。批处理文件如何等待ftp连接建立然后回显后续ftp命令的用户名和密码? 谢谢你的帮助。
答案 0 :(得分:1)
您可以将某些数据回显到临时文件,然后将该文件重定向到ftp命令的标准输入。例如:
>file echo USERNAME
>>file echo.
>>file echo PASSWORD
>>file echo.
ftp < file
rem Now we can delete the file
del file
如果您不需要换行符(当ftp程序要求提供凭据时需要模拟ENTER按键),那么您可以在没有临时文件的情况下进行管理:
echo USERNAME | ftp
答案 1 :(得分:1)
实际上有一种不同的方法可以做到这一点。
Windows ftp接受包含要运行的命令的“-s:filename”参数。您可以使用“USER username \ nPASSWD”格式存储用户名/密码,并在建立连接时首先运行它们。
确保之后删除该文件,或者更好地使用未命中磁盘的临时文件;)
编辑:为coolkid澄清。这个确实是你的答案(感谢备份Joey)。
明确地说,你在这里。
upload.cmd
的内容:
@echo off
set /p name= Username?
set /p pass= Password?
REM Give dummy data to the human-friendly FTP prompts
REM We will pass actual FTP commands in the next stanza
echo dummy > ftp_commands.txt
echo dummy >> ftp_commands.txt
echo USER %name% >> ftp_commands.txt
echo PASS %pass% >> ftp_commands.txt
echo PUT ftp_commands.txt >> ftp_commands.txt
ftp -s:ftp_commands.txt ftp.mydomain.com
正在运行upload.cmd
:
C:\>upload.cmd
Username?anonymous
Password?foobar
Connected to ftp.mydomain.com.
220 2k-32-71-e Microsoft FTP Service (Version 5.0).
User (ftp.mydomain.com:(none)):
331 Password required for dummy .
530 User dummy cannot log in.
Login failed.
ftp> USER anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
230 Anonymous user logged in.
ftp> PUT ftp_commands.txt
200 PORT command successful.