如何打开cmd窗口并使用批处理文件传入硬编码值?

时间:2011-06-14 13:27:49

标签: batch-file cmd dos

我找到了许多接近我想要的解决方案但不完全正确,并且我自己没有运气。

我正在尝试创建一个可用于自动执行防火墙身份验证的脚本。我通过打开cmd窗口并尝试远程登录到防火墙后面的设备/ PC,手动执行此操作。短暂停顿后,系统会提示我输入用户名和密码。

有没有办法编写一个打开cmd窗口并提供这两个值的批处理文件?

目前它是这样的:

C:> telnet device (I type this in to prompt authentication)
(short pause)
-- Firewall Authentication --
Username: (asks for input which I provide then press enter)
Password: (same as username)
-- Authentication Successful --

感谢您对此提供任何帮助。如果您需要更多细节,请评论:)

2 个答案:

答案 0 :(得分:2)

你可以为它的sendkeys做一个小的vbscript。让我们说如果提示出现并且它首先关注用户名,那么如果您可以执行一个TAB及其密码,并且您可以使用RETURN键提交凭据,则可以将其添加到批处理脚本中:

CSCRIPT //NoLogo //B "C:\Folder\sendkeys.vbs"
PING 1.1.1.1 -n 1 -w 11000 >NUL

然后使用say Notepad创建一个名为sendkeys.vbs的文件(在本例中),并添加以下代码行:

set wshShell = WScript.CreateObject("WSCript.shell")

wscript.sleep 5000
wshShell.sendkeys "type username here"
wscript.sleep 1000
wshShell.sendkeys "{ENTER}"
wscript.sleep 3000 
wshShell.sendkeys "type password here"
wscript.sleep 1000
wshShell.sendkeys "{ENTER}"
WScript.Quit

我这样做是为了通过命令行在Thunderbird中自动发送电子邮件。

答案 1 :(得分:0)

我担心,你不能这样做,因为telnet是一个可执行文件,所以处理输入(用户名和密码)只是这个程序的内部逻辑。

只有当telnet支持用户名和密码作为命令行参数时,才可能这样做。


但是存在一些棘手的解决方法。让你的朋友,一个程序员,写一个简单的程序

  1. 接受用户名和密码作为命令行参数
  2. 使用重定向的控制台输入/输出运行telnet.exe
  3. 跟踪控制台输出中的更改(等待用户输入)
  4. 模拟输入用户名和密码
  5. 返回与telnet相同的错误代码