各位大大好,我现在有这样一个需求,是nslookup一个域名,然后输出它的IP,域名#IP(有些域名有好几个IP)的形式输出,以电信的网络为例,比如我在domain.txt里面保存的是
zy.xunlei.com
我希望输出到ipdomain.txt的是如下内容- zy.xunlei.com#121.14.82.142
- zy.xunlei.com#114.80.189.6
- zy.xunlei.com#114.80.189.7
- zy.xunlei.com#114.80.189.8
- zy.xunlei.com#114.80.189.9
- zy.xunlei.com#121.14.82.140
- zy.xunlei.com#121.14.82.141
复制代码 当我使用这样的批处理(也是在论坛上找到然后修改的)时- @echo off
- for /f "delims=" %%a in (D:\domain.txt) do (
- for /f "skip=1 tokens=2 delims=, " %%b in ('nslookup %%a 2^>nul^|findstr "[0123456789\.]"') do (call echo %%a#%%b>>ipdomain.txt))
- type ipdomain.txt
- pause
复制代码 输出的内容却是- zy.xunlei.com#movie.co.sandai.net
- zy.xunlei.com#121.14.82.142
- zy.xunlei.com#114.80.189.6
- zy.xunlei.com#114.80.189.7
- zy.xunlei.com#114.80.189.8
- zy.xunlei.com#114.80.189.9
- zy.xunlei.com#121.14.82.140
- zy.xunlei.com#121.14.82.141
- zy.xunlei.com#zy.xunlei.com
- zy.xunlei.com#movie.xunlei.com
复制代码 里面会把名称以及Aliases的内容输入进去,当然这是因为我查找的字符串是只要包含数字和点就OK了,我按照网上的正则表达式写法,把findstr "[0123456789\.]"改为findstr "^[0-9^.]*$",意思是除数字和点之外的字符串之外都过滤,我在本地使用的时候,可以正确输出需要的内容,但我运行脚本处理nslookup命令时却没有任何的输出,百思不得其解,所以上论坛来请教,谢谢各位!
此外,我想问一下脚本中2^>nul^是什么意思?
-------------------------------------
正确的代码应为:- @echo off
- for /f "delims=" %%a in (D:\D2993-3993.txt) do (
- for /f "skip=1 tokens=2 delims=, " %%b in ('nslookup %%a 2^>nul^|findstr "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*.[0-9]"') do (call echo %%a#%%b>>ipD2993-3993.txt))
- type ipD2993-3993.txt
- pause
复制代码
|