批处理文件,需要将输出保存为文本文件,以便在windows中使用telnet命令

批处理文件,需要将输出保存为文本文件,以便在windows中使用telnet命令,windows,batch-file,cmd,Windows,Batch File,Cmd,我正在尝试telnet端口,并希望将输出保存到文本文件中。我已经找到了两个解决方案,但没有一个是通过命令提示符为我工作的 telnet 127.0.0.1 7000-f output.txt telnet 127.0.0.1 7000>>output.txt 另外,分别用1>和2>检查stdout和stderr。还尝试通过2>&1将2(stderr)重定向到1(stdout),如本链接中所述 在批处理文件中运行以下代码后,文件没有任何日志。但是如果它能够远程登录端口,它会存储日志。但我的要求是,

我正在尝试telnet端口,并希望将输出保存到文本文件中。我已经找到了两个解决方案,但没有一个是通过命令提示符为我工作的

telnet 127.0.0.1 7000-f output.txt

telnet 127.0.0.1 7000>>output.txt

另外,分别用1>和2>检查stdout和stderr。还尝试通过2>&1将2(stderr)重定向到1(stdout),如本链接中所述

在批处理文件中运行以下代码后,文件没有任何日志。但是如果它能够远程登录端口,它会存储日志。但我的要求是,如果telnet无法按如下方式连接,则从cmd获取日志:

连接到127.0.0.1…无法在端口7002上打开与主机的连接:连接失败

for port in 7000 7001 7002 
 do
  start cmd.exe /k "telnet 127.0.0.1  $port -f C:\Users\rohit.bagjani\Desktop\result\telnetresult.txt"
done

以管理员身份打开cmd.exe并运行:

powershell set-executionpolicy Bypass
创建一个新文件并将其命名为
port test.ps1

把这个贴进去

param(
    [string] $rHost = $1,
    [int] $port = $2
     )

   write-host "Connecting to $rHost on port $port"
try {
  $socket = new-object System.Net.Sockets.TcpClient($rHost, $port)
} catch [Exception] {
  write-host $_.Exception.GetType().FullName
  write-host $_.Exception.Message
  exit 1
}

write-host "Connected.`n"
exit 0
现在,您可以打开cmd.exe并按如下方式运行它:

powershell -file D:\test\port-test.ps1 hostnamename portnr
i、 e powershell-文件D:\test\telnetit.ps1 somehost.domain.com 23

如果连接不起作用,您将收到如下消息:

连接到端口23上的somehost.domain.com system.Management.Automation.MethodInvocationException
使用“2”参数调用“.ctor”时出现异常:“无法建立连接,因为目标计算机主动拒绝了它10.1.2.3:23”

如果成功,您将获得:

连接到端口23上的somehost.domain.com

已连接。

作为管理员打开cmd.exe并运行:

powershell set-executionpolicy Bypass
创建一个新文件并将其命名为
port test.ps1

把这个贴进去

param(
    [string] $rHost = $1,
    [int] $port = $2
     )

   write-host "Connecting to $rHost on port $port"
try {
  $socket = new-object System.Net.Sockets.TcpClient($rHost, $port)
} catch [Exception] {
  write-host $_.Exception.GetType().FullName
  write-host $_.Exception.Message
  exit 1
}

write-host "Connected.`n"
exit 0
现在,您可以打开cmd.exe并按如下方式运行它:

powershell -file D:\test\port-test.ps1 hostnamename portnr
i、 e powershell-文件D:\test\telnetit.ps1 somehost.domain.com 23

如果连接不起作用,您将收到如下消息:

连接到端口23上的somehost.domain.com system.Management.Automation.MethodInvocationException
使用“2”参数调用“.ctor”时出现异常:“无法建立连接,因为目标计算机主动拒绝了它10.1.2.3:23”

如果成功,您将获得:

连接到端口23上的somehost.domain.com

已连接。

您无法捕获内置的telnet客户端输出。MS telnet不支持标准输入/输出。最好考虑使用第三方telnet客户端或将套接字与powershell/c结合使用#代码中显示的端口部分在windows中永远不会工作,这些是Unix/Linux命令。此外,-f将只在telnet上记录客户端telnet错误。。。不过,您想运行此程序纯粹是为了端口测试吗?谢谢@npocmaka的评论。@GerhardBarnard for loop在windows中确实可以工作,是的,我已经提到了您的观点(以不同的方式),即-f将只记录客户端telnet错误。是的,我会的,我只想做端口测试。您是否有任何解决方法,这将非常有用?是的,使用powershell。将发布答案。您无法捕获内置的telnet客户端输出。MS telnet不支持标准输入/输出。最好考虑使用第三方telnet客户端或将套接字与powershell/c结合使用#代码中显示的端口部分在windows中永远不会工作,这些是Unix/Linux命令。此外,-f将只在telnet上记录客户端telnet错误。。。不过,您想运行此程序纯粹是为了端口测试吗?谢谢@npocmaka的评论。@GerhardBarnard for loop在windows中确实可以工作,是的,我已经提到了您的观点(以不同的方式),即-f将只记录客户端telnet错误。是的,我会的,我只想做端口测试。您是否有任何解决方法,这将非常有用?是的,使用powershell。我随身带着这个解决方案,我一直在寻找直接用于批处理文件运行命令行的解决方案。无论如何,谢谢。对于批处理,如果无法连接或在连接时回显连接,则可以等待超时和回显失败,但这是一种更可靠的方法。我随身携带此解决方案,我一直在寻找批处理文件直接运行命令行的解决方案。无论如何,谢谢。对于批处理,如果无法连接或在连接时回显连接,则可以等待超时和回显失败,但这是一种更可靠的方法。