windows - 命令的输入参数在批量编程时需要用户手动输入

标签 windows windows-xp cmd batch-file

我正在使用 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/

相关文章:

python - Windows 上的子进程未收到信号 (SIGTERM)

c++ - 将新的 Windows 功能与回退一起使用

windows-xp - 我可以设置断点的XP启动过程中最早的点是什么?

linux - 代理设置不起作用

java - "Error: Could not find or load main class My.class"

windows - 最近更新到 Windows 10 后,VMWare Workstation 无法在 Windows 10 上运行

c# - 如何拦截所有按键事件,包括 ctrl+alt+del 和 ctrl+tab?

c++ - Visual C++ 2013 - Windows XP Sp1 C 程序不工作 - 空白命令行

windows-8 - 在 Windows 8 C# 中执行 cmd 命令?

batch-file - 为什么在 `for/F` 或 `for/R` 的参数中不需要转义感叹号?