最近在做一个功能 , 就是用bat获取局域网内所有在线Ip地址 ,然后需要对应这些Ip地址修改数据库 , 怎么用winform获取bat获取的IP地址?
这个是我找的bat 比如说网段是9的Ip
@echo off&title 扫描MAC,IP,计算机名&color a&mode con: cols=60 lines=22
setlocal enabledelayedexpansion
:: iqp -> 内网IP的前3位,ip1 -> 起始ip,ip2 -> 结束ip
set ipq=192.168.9
set /a ip1=1
set /a ip2=255
set /a con=0
set /a contotal=%ip2%-%ip1%+1
for /l %%i in (!ip1!,1,!ip2!) do (
set ip=!ipq!.%%i
echo 扫描!ip!
ping !ip! -n 1 -w 1 >nul
if !errorlevel! equ 0 (
for /f "tokens=1" %%j in ('nbtstat -a !ip! ^| find /i "UNIQUE" ^| find /i "00"') do set pcname=%%j
for /f "tokens=4 delims=* " %%j in ('nbtstat -a !ip! ^| find /i "MAC Address"') do set mac=%%j
echo !ip!>>info.txt
set /a con=!con!+1
)
)
我把获取到的Ip导入到info的文本文档里面 , 有没有更好的办法直接从bat获取IP在自动修改数据库 而不用导入到文本文档这个过程 ?
echo !ip!>>info.txt
这一句就是将结果保存到info.txt这个文件里去了,你直接读取这个文件就可以了
那怎么用winform自动执行bat 而不是鼠标双击 ?
@空白桑: 你可以用个定时器,然后每过几秒自动执行下边的代码
System.Diagnostics.Process.Start("cmd", fileName);//fileName是你bat文件的全路径。
@空白桑: 其实你完全可以使用Process替代上面的批处理,通过Process的输入输出重定向就可以轻松解决自动处理的问题
如上所言,我试了下,扫描到了就会保存在本地的相对文件夹下的一个info.txt文件下,你直接在你的winform程序里面调用这个bat,然后读取该txt文件撒