我正在使用 Windows 批处理程序来创建与 ftp 主机的 ftp 连接,并自动将文件上传到该主机。但是,ftp 命令在命令中没有获取用户名和密码的参数,我必须在后续命令中输入它。批处理文件如何等待 ftp 连接建立然后回显后续 ftp 命令的用户名和密码? 感谢您的帮助。
最佳答案
实际上有一种不同的方法可以做到这一点。
Windows ftp 接受包含要运行的命令的“-s:filename”参数。您可以以“USER username\nPASSWD”pass 格式存储用户名/密码,当建立连接时,它们将首先运行。
确保事后删除该文件,或者更好的是使用不会写入磁盘的临时文件 ;)
编辑:为 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.
关于windows - 命令的输入参数在批量编程时需要用户手动输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5413917/