找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 3941|回复: 4

[文本处理] [已解决]telnet这种外部exe的输出没法用|或者for/f之类的方法获得并处理怎么办

[复制链接]
发表于 2025-7-11 16:18:44 | 显示全部楼层 |阅读模式
本帖最后由 LTSC1809 于 2025-7-15 13:48 编辑

Origin_MD_Data:JTVCY29kZSU1REBlY2hvJTIwb2ZmJTBBZm9yJTIwL2wlMjAlMjUlMjVpJTIwaW4lMjAlMjgwJTJDMSUyQzY1NTM1JTI5JTIwZG8lMjBmb3IlMjAvZiUyMCUyNSUyNWolMjBpbiUyMCUyOCUyN3RlbG5ldCUyMDE5Mi4xNjguMS41JTIwJTI1JTI1aSU1RSU3Q2ZpbmQlMjAlMjIldTY1RTAldTZDRDUldTYyNTMldTVGMDAldTUyMzAldTRFM0IldTY3M0EldTc2ODQldThGREUldTYzQTUlMjIlMjclMjklMjBkbyUyMGlmJTIwJTIyJTI1JTI1aiUyMiUyMGVxdSUyMCUyMiUyMiUyMGVjaG8lMjAldTdBRUYldTUzRTMlMjUlMjVpJTNBJXU2MjEwJXU1MjlGJTBBcGF1c2UlMEFleGl0JTVCL2NvZGUlNUQlMEEldTU5ODIldTRFMEEldTRFRTMldTc4MDEldTc1MjgldTRFOEUldTU0MTExOTIuMTY4LjEuNSV1OEZERSV1NjNBNSV1RkYwQyV1NEVDRTAldTdBRUYldTUzRTMldTRFMDAldTc2RjQldTZENEIldThCRDUldTUyMzA2NTUzNSV1N0FFRiV1NTNFMyV1RkYwQyV1NTk4MiV1Njc5QyV1NjI3RSV1NTIzMCV1NTRFQSV1NEUyQSV1N0FFRiV1NTNFMyV1NUYwMCV1NjUzRSV1NUMzMSV1NjYzRSV1NzkzQSV1OEZEOSV1NEUyQSV1N0FFRiV1NTNFMyV1MzAwMiV1NzNCMCV1NTcyOCV1NTNEMSV1NzNCMCV1N0EwQiV1NUU4RiV1NEVDMCV1NEU0OCV1NEU1RiV1NEUwRCV1OEY5MyV1NTFGQSV1RkYwQyV1N0VDRiV1OEZDNyV1NkQ0QiV1OEJENSV1NTNEMSV1NzNCMHRlbG5ldCV1OEZEOSV1NzlDRCV1NTkxNiV1OTBFOGV4ZSV1ODAwQyV1OTc1RSV1NTE4NSV1OTBFOCV1NjMwNyV1NEVFNCV1NzY4NCV1OEY5MyV1NTFGQSV1NjVFMCV1NkNENSV1NzUyOGZvciUyMC9mJXVGRjBDJXU3QkExJXU5MDUzJXU3QjI2JXU2MjE2JXU4MDA1JTNFJXU5MUNEJXU1QjlBJXU1NDExJXU3QjI2JXU1M0Y3JXU0RTRCJXU3QzdCJXU3Njg0JXU2NUI5JXU2Q0Q1JXU4M0I3JXU1M0Q2JXU1MjMwJXVGRjBDJXU0RTVGJXU1QzMxJXU2Q0ExJXU1MjlFJXU2Q0Q1ZmluZCV1MzAwMiV1OEJGNyV1OTVFRSV1NjcwOSV1NkNBMSV1NjcwOSV1NTI5RSV1NkNENSV1ODNCNyV1NTNENiV1NTIzMCV1NUI4MyV1NEVFQyV1NzY4NCV1OEY5MyV1NTFGQSV1RkYxRiV1OEMyMiV1OEMyMiV1RkYwMQ==
  1. @echo off for /l %%i in (0,1,65535) do for /f %%j in ('telnet 192.168.1.5 %%i^|find "无法打开到主机的连接"') do if "%%j" equ "" echo 端口%%i:成功 pause exit
复制代码
如上代码用于向192.168.1.5连接,从0端口一直测试到65535端口,如果找到哪个端口开放就显示这个端口。现在发现程序什么也不输出,经过测试发现telnet这种外部exe而非内部指令的输出无法用for /f,管道符或者>重定向符号之类的方法获取到,也就没办法find。请问有没有办法获取到它们的输出?谢谢!
发表于 2025-7-11 17:09:52 | 显示全部楼层
%j为空,应该会忽略这行吧,所以这是无效判断
发表于 2025-7-11 19:27:06 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-7-11 20:25 编辑

回复 1# LTSC1809

   批处脚本本身似乎没有这方面的有效解决方案(http://bbs.bathome.net/thread-8225-1-1.html),即使转用 powershell, python 可能也需要第三方,楼主不妨试试 ds 或 豆包 这类 AI 出码方案...

   另给一个参考方案》改用 curl.exe (本坛第三方下载 http://bcn.bathome.net/s/tool/index.html?key=curl,落地即用,与批处脚本文件同目录)测试远程端口是否开放,试试以下代码

  1. @echo off &for /l %%i in (0,1,65535) do for /f %%j in ('curl 192.168.1.5:%%i 2>&1^|find /i /v "failed" ') do echo,端口%%i:开放成功
  2. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
LTSC1809 + 1 感谢!

查看全部评分

发表于 2025-7-13 09:47:12 | 显示全部楼层
这是telnet本身的特性,并非因为它是外部命令。
实际上,大部分外部命令的输出结果是可以通过管道进行传递的。
发表于 2025-7-16 00:14:04 | 显示全部楼层
telnet输出应该用的是WriteConsole这个winapi
WriteConsole不支持管道和重定向
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:06 , Processed in 0.023449 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表