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

[文件操作] 批处理如何提取nslookup域名解析结果中的ip地址、名称并按指定格式输出

[复制链接]
发表于 2021-4-29 17:19:22 | 显示全部楼层 |阅读模式
求助:代码实现不了效果,编程实在不会
1、文本文件List.txt内容如下:
220.181.108.184
220.181.108.183
220.181.108.182
220.181.108.181

2、上面域名在cmd下nslookup后的结果如下:

C:\>nslookup 220.181.108.184
服务器:  xd-cache-1.bjtelecom.net
Address:  219.141.136.10

非权威应答:
名称:    baiduspider-220-181-108-184.crawl.baidu.com
Addresses:  220.181.108.184


我要输出的格式:

ip:220.181.108.184,名称:baiduspider-220-181-108-184.crawl.baidu.com
ip:220.181.108.183,名称:baiduspider-220-181-108-184.crawl.baidu.com
ip:220.181.108.182,名称:baiduspider-220-181-108-184.crawl.baidu.com
ip:220.181.108.181,名称:baiduspider-220-181-108-184.crawl.baidu.com

我参考的帖子:http://www.bathome.net/thread-42102-1-1.html,中pcl_test,4楼的代码。请大神帮忙调整下,并输出TXT文档形式。
  1. @echo off
  2. for /f %%a in ('more +22 "%~f0"') do (
  3.     setlocal enabledelayedexpansion
  4.     for /f "delims=" %%b in ('nslookup %%a 2^>^&1') do (   
  5.         for /f "tokens=1,2" %%c in ("#%%b") do (
  6.             if /i "%%c" equ "#Address:" (
  7.                 set /p=DNSDZ:%%d YM:%%a<nul
  8.                 set s=%%dfedcba9876543210&set/an=0x!s:~15,1!
  9.                 for /l %%i in (1 1 !n!) do set "space=!space! "
  10.             ) else (
  11.                 if not defined f (
  12.                     if /i "%%c" equ "#Addresses:" (
  13.                         echo; YMDZ:%%d
  14.                         set f=1
  15.                     )
  16.                 ) else if "%%c" equ "#" echo;          !space!YM:%%a YMDZ:%%d
  17.             )
  18.         )
  19.     )
  20.     endlocal&echo;
  21. )
  22. pause&exit
  23. 220.181.108.184
  24. 220.181.108.183
  25. 220.181.108.182
  26. 220.181.108.181
复制代码
发表于 2021-4-29 23:25:26 | 显示全部楼层
本帖最后由 newswan 于 2021-4-29 23:55 编辑

  1. @echo off

  2. for /f %%a in (ip.txt) do (
  3.     for /f "tokens=1,2 delims=:" %%i in (' nslookup %%a | more +2 ') do (
  4.         if "%%i"=="名称" echo ip: %%a, %%i: %%j
  5.     )
  6. )
  7. goto :END

复制代码

评分

参与人数 1技术 +1 收起 理由
minase + 1 感谢分享技术。

查看全部评分

发表于 2021-4-30 09:05:40 | 显示全部楼层
本帖最后由 minase 于 2021-4-30 09:08 编辑

回复 2# newswan

这个代码简洁易懂,more+2是什么意思?
能帮解答一下吗?
发表于 2021-4-30 10:41:28 | 显示全部楼层
more +2 表示跳过前面二行,可有可无
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 16:05 , Processed in 0.016951 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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