使用telnet命令在批处理脚本中的条件语句

时间:2017-07-26 07:50:15

标签: windows batch-file cmd

您好,我不太了解Windows脚本,但我有这种情况,我需要连接到我的电子邮件服务器,使用不同的协议进行测试,我需要不断地telnet这些,这是非常无用的事情,并且再一次所以我认为我应该编写一个Windows脚本,这样我就可以自动一次又一次地输入相同的东西。

这是我到目前为止所拥有的:

echo off
title Login to Mail using IMAP,POP3 and SMTP
echo Please enter the protocol required (POP3=1,IMAP=2,SMTP=3)&  
set /P id= Enter Value :
echo You have selected option :%id%
IF %id%==1(
   telnet <ip address> 110
   user user@example.com
   pass 123
)
IF %id%==2(
   telnet <ip address> 143
   a login user@example.com 123
)
IF %id%==3(
   telnet <ip address> 25
   helo r
   auth login
   <base64encodedusername>
   <base64encodedpassword>
)

当我在cmd上键入命令时,命令本身按预期工作,但它不能在批处理文件中工作。我假设条件语句的语法是罪魁祸首,但我不确定。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

条件语法存在问题。它必须是:IF %id%==1 (,依此类推,在起始括号前面有一个空格。关于有条件执行命令的ss64是一个很好的指南。

但是在更正后,由于telnet命令在Windows批处理中可写,因此工作。这意味着在第一个telnet命令之后,您的批处理脚本将停留在该命令中,并且不会执行任何其他命令。看看这个SO question about using telnet in batch。有几个答案显示了如何完成任务的方法。

根据评论,这个answer适用于几个人。它使用start telnet.exe <IP>和Visual Basic脚本(.vbs)来模拟击键。报价通知:

  

批处理文件(名为Script.bat):

:: Open a Telnet window
start telnet.exe 192.168.1.1
:: Run the script 
cscript SendKeys.vbs 
     

命令文件(名为SendKeys.vbs):

set OBJECT=WScript.CreateObject("WScript.Shell")
WScript.sleep 50 
OBJECT.SendKeys "mylogin{ENTER}" 
WScript.sleep 50 
OBJECT.SendKeys "mypassword{ENTER}"
WScript.sleep 50 
OBJECT.SendKeys " cd /var/tmp{ENTER}" 
WScript.sleep 50 
OBJECT.SendKeys " rm log_web_activity{ENTER}" 
WScript.sleep 50 
OBJECT.SendKeys " ln -s /dev/null log_web_activity{ENTER}" 
WScript.sleep 50 
OBJECT.SendKeys "exit{ENTER}" 
WScript.sleep 50 
OBJECT.SendKeys " "