由于单位要手动设IP,经常有冲突,从网上找了代码,分2段:先设置一个临时的IP,根据本机临时IP扫描出局域网内可用IP地址,生成IP.TXT文件,再从IP.TXT中提取第一个(即未占用的IP)分配给本机
结果:
1、如果网线未插上会出错,不断打开ip.txt空白文件……若网线接好则没问题(WinXP下测试,笔记本有无线和有线2个网卡)
2、在同事一Win7笔记本上,网线接好,手动设置IP正常,运行下面代码仍出现第1条所说错误情况……
下面是BAT代码,求解决:- ::设置本机临时IP
- netsh interface ip set address name="本地连接" source=static addr=10.21.3.254 mask=255.255.255.0 gateway=10.21.3.1 gwmetric=1 >nul
- ::根据本机IP扫描已占用IP,生成ip.txt(必须成功连入LAN,否则出错)
- for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /c:"IP Address"') do set "oldip=%%i"
- for /f "tokens=2 delims=:" %%a in ('ipconfig /all^|findstr /c:"Default Gateway"') do (
- set "wg=%%a"
- for /f "tokens=1-3 delims=. " %%i in ("%%a") do (
- set "wd=%%i.%%j.%%k."
- for /l %%m in (1,1,255) do start /min ping /n 1 %%i.%%j.%%k.%%m
- )
- )
- arp -a|findstr "dynamic">ip.txt
-
- ::自动更换未占用的第一个IP地址
- for /l %%i in (1,1,255) do (
- set "ip=%%i"
- if "%wd%%%i" neq "%wg:~1%" findstr "\<%wd%%%i\>" ip.txt>nul||goto next
- )
- :next
- netsh interface ip set address "本地连接" static %wd%%ip% %mask% %wg:~1% 1 >nul
- echo.
- echo 配置后ip为%wd%%ip%
- echo.
- echo 完成配置,请按任意键退出。
- pause>nul
复制代码
|