标题: [网络连接] 【已经解决】批处理如何用for提取netstat -ano返回结果中的特定ip地址? [打印本页]
作者: raddison 时间: 2017-4-24 14:22 标题: 【已经解决】批处理如何用for提取netstat -ano返回结果中的特定ip地址?
本帖最后由 raddison 于 2017-4-25 18:18 编辑
求帮忙,关于forloop嵌套调用,传入外循环的变量值到内循环- for /f "tokens=2" %%a in ('netstat -ano') do (
- set "str=%%a"
- SETLOCAL ENABLEDELAYEDEXPANSION
- call set str=!str:%search%=%replace%!
-
-
- call :kill !r!
- ENDLOCAL
- )
-
- :kill
- for /f "tokens=4" %%c in (echo %1) do (
- echo !c!
- )
复制代码
其实我想实现,提取netstat -ano这个命令的返回结果当中的ip地址的列表而已
作者: ShowCode 时间: 2017-4-24 15:12
- @echo off
- for /f "tokens=2" %%i in ('netstat -ano ^| findstr "\..*\..*\..*:"') do (
- echo,%%i
- )
- pause
复制代码
这样可以吗
作者: raddison 时间: 2017-4-24 15:25
不行,要去掉后面的端口,我只所以把冒号用空格 隔开,就是想再循环一次,把第一列,也就是ip 拿出来,其他的端口信息,要过滤掉的。谢谢2楼
作者: raddison 时间: 2017-4-24 16:05
本帖最后由 raddison 于 2017-4-24 18:09 编辑
@echo off
set b=
set "replace= : "
set "search=:"
for /f "tokens=2" %%a in ('netstat -ano') do (
set "str=%%a"
SETLOCAL ENABLEDELAYEDEXPANSION
call set str=!str:%search%=%replace%!
for /f "tokens=1,2 delims=:" %%b in ("!str!") do (
echo;%%b
endlocal
)
)
我研究出来了。 但是现在还有最后一个问题,是怎么除重复,麻烦各位给 个好招!谢谢
作者: ShowCode 时间: 2017-4-24 19:42
回复 3# raddison
没有必要再循环一次- @echo off
- for /f "tokens=2 delims=: " %%i in ('netstat -ano ^| findstr "\..*\..*\..*:"') do (
- echo,%%i
- )
- pause
复制代码
去重的事情稍后再说
作者: raddison 时间: 2017-4-24 23:37
嗯,有道理,可以的,那就剩下去除的问题了。谢谢5楼
作者: ShowCode 时间: 2017-4-25 09:56
回复 6# raddison
http://bbs.bathome.net/thread-5219-1-1.html
http://bbs.bathome.net/thread-5509-1-1.html
http://bbs.bathome.net/thread-4690-1-1.html
http://bbs.bathome.net/thread-5326-1-1.html
作者: raddison 时间: 2017-4-25 11:11
@echo off
set b=
set s=
set m=
set i=
set count =0
for /f "tokens=2" %%i in ('tasklist /nh /fi "imagename eq QQ.exe"') do (
set "SkipRow=%%i"
goto oSkip
)
:DoSkip
echo %SkipRow%
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=4 delims=: " %%m in ('netstat -ano ^| findstr "\..*\..*\..*:"^|find "%SkipRow%"^|find /v "LISTENING"') do (
if not defined %%m set %%m=s & echo,%%m
)
endlocal
我补充了下,这个已经很接近我的问题答案了。那最后如果仅仅输出IP总数呢? 该如何。? 谢谢7楼,非常感谢了!
作者: ShowCode 时间: 2017-4-25 14:22
回复 8# raddison
if not defined %%m set %%m=s & set /a count+=1
最后查看一下 count 的值就行了
作者: raddison 时间: 2017-4-25 18:17
感激! 搞定了,谢谢!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |