命令的输入参数需要批量编程中的用户手动输入

时间:2011-03-24 01:56:55

标签: windows windows-xp cmd batch-file

我正在使用Windows批处理编程来创建与ftp主机的ftp连接,并自动将文件上传到该主机。但是,ftp命令没有参数来获取命令中的用户名和密码,我必须在后续命令中输入它。批处理文件如何等待ftp连接建立然后回显后续ftp命令的用户名和密码? 谢谢你的帮助。

2 个答案:

答案 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.