[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
试试看吧。。。
  1. @echo off
  2. (for /f "delims=" %%a in (List.txt) do (
  3.   for /f "skip=1 delims=" %%b in ('nslookup %%a^|findstr "[0-9]$"') do (
  4.     set "addr=%%b"
  5.     setlocal enabledelayedexpansion
  6.     set "addr=!addr:*:=!"
  7.     for %%c in (!addr!) do echo,%%c#%%a
  8.     endlocal
  9.   )
  10. ))>Answer.txt
复制代码

TOP

嗯,行家一出手果然就不一样,困扰我好几天的问题就这样被你化解了,佩服佩服!

不过,执行结果还不是最完美,nslookup第一项www.google.com 本身有六个返回结果,代码执行后只有四个返回:

74.125.128.106#www.google.com
74.125.128.104#www.google.com
74.125.128.103#www.google.com
74.125.128.105#www.google.com

这个问题又如何完善呢?   

---------nslookup www.google.com------------

Non-authoritative answer
Name:    www.google.com
Addresses:  74.125.128.103, 74.125.128.99, 74.125.128.105, 74.125.128.104
          74.125.128.147, 74.125.128.106

--------好好学习    天天向上-------------

TOP

  1. @echo off
  2. (for /f "delims=" %%a in (List.txt) do (
  3.   for /f "tokens=1* delims=: " %%b in ('nslookup %%a 2^>nul') do (
  4.     if defined flag (
  5.       if /i "%%b"=="Addresses" (
  6.         for %%d in (%%c) do echo,%%d#%%a
  7.       ) else if /i "%%b"=="Address" echo,%%c#%%a
  8.       set "flag="
  9.     )
  10.     if /i "%%b"=="Name" set flag=1
  11.   )
  12. ))>Answer.txt
复制代码

TOP

非常感谢楼上的回答,不过我正在学习批处理,冷不丁的给我个VBS还真接受不了。

请问,用批处理有没有可以解决的方案呢? 这样复杂的查找功能在批处理中又是如何实现的呢?

再次感谢!

TOP

将每个域名的查询结果通过管道传递给一个进行正则查找的脚本,然后用正则查找抓出IP地址,追加到一个文本文件,每行后跟本次查询的域名。
关于正则查找的脚本可参考http://www.bathome.net/thread-19174-1-1.html

TOP

返回列表