Board logo

标题: [网络连接] 批处理根据本机IP扫描LAN中未占用的IP地址并设置,为何有些电脑出错? [打印本页]

作者: gudou    时间: 2011-9-29 03:09     标题: 批处理根据本机IP扫描LAN中未占用的IP地址并设置,为何有些电脑出错?

由于单位要手动设IP,经常有冲突,从网上找了代码,分2段:先设置一个临时的IP,根据本机临时IP扫描出局域网内可用IP地址,生成IP.TXT文件,再从IP.TXT中提取第一个(即未占用的IP)分配给本机

结果:
1、如果网线未插上会出错,不断打开ip.txt空白文件……若网线接好则没问题(WinXP下测试,笔记本有无线和有线2个网卡)
2、在同事一Win7笔记本上,网线接好,手动设置IP正常,运行下面代码仍出现第1条所说错误情况……

下面是BAT代码,求解决:
  1. ::设置本机临时IP
  2. 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
  3. ::根据本机IP扫描已占用IP,生成ip.txt(必须成功连入LAN,否则出错)
  4. for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /c:"IP Address"') do set "oldip=%%i"
  5. for /f "tokens=2 delims=:" %%a in ('ipconfig /all^|findstr /c:"Default Gateway"') do (
  6.    set "wg=%%a"
  7.    for /f "tokens=1-3 delims=. " %%i in ("%%a") do (
  8.        set "wd=%%i.%%j.%%k."
  9.        for /l %%m in (1,1,255) do start /min ping /n 1 %%i.%%j.%%k.%%m
  10.    )
  11. )
  12. arp -a|findstr "dynamic">ip.txt
  13. ::自动更换未占用的第一个IP地址
  14. for /l %%i in (1,1,255) do (
  15.     set "ip=%%i"
  16.     if "%wd%%%i" neq "%wg:~1%" findstr "\<%wd%%%i\>" ip.txt>nul||goto next
  17. )
  18. :next
  19. netsh interface ip set address "本地连接" static %wd%%ip% %mask% %wg:~1% 1 >nul
  20. echo.
  21. echo 配置后ip为%wd%%ip%
  22. echo.
  23. echo 完成配置,请按任意键退出。
  24. pause>nul
复制代码

作者: hfg1977    时间: 2011-9-29 03:44

ip.txt 在代码中就出现2次,都是写入, 并没有打开\运行 ip.txt
"不断打开ip.txt空白文件" 不可能吧?
作者: gudou    时间: 2011-9-29 18:55

绝对有可能,不!是一定!!请把网线拔掉,运行试试
会打开ip.txt空白文件并停止,如果手动关闭,会再次……

有的Win7系统接好的网络也是同样错误……
作者: gudou    时间: 2011-9-29 18:58

(
set "ip=1"
if "1" NEQ "~1wd1\>" ip.txt1>nul  || goto next
)

这是停止时的CMD窗口代码
作者: gudou    时间: 2011-9-29 18:59

求能防止Win7下和XP未接网线下此类错误的代码
作者: lxzzr    时间: 2011-9-29 19:14

不大理解这个“临时IP”,是否和正常IP在同一网段?
作者: gudou    时间: 2011-9-30 23:58

不大理解这个“临时IP”,是否和正常IP在同一网段?
lxzzr 发表于 2011-9-29 19:14



    当然在同一网段啊,正常情况下XP可正确设置,只要是拔掉网线就一定出错,Win7下也出现类似错。
作者: lxzzr    时间: 2011-10-1 00:09

回复 7# gudou
那你怎么确定这个“临时IP”没有被占用?
作者: gudou    时间: 2011-10-2 03:15

版主大人啊,请帮忙啊……

这个临时IP我确定不会有人占用,因为单位的IP都是我分配的大家只是知道最后的数字在50~200之间(开会说的,特意保留些)

有条件是话(做个2台电脑的LAN也可啊)请直接运行下测试,谢谢。
作者: gudou    时间: 2011-10-2 03:20

当然,可能会有2台电脑上同时运行这个批处理的可能,但先运行的不会出错啊,后运行的如出错,只要稍等下再试就OK。不会出现我所说的这样绝对的错误情况啊
作者: gudou    时间: 2011-10-2 17:18

虽然有网络方面的问题,但实际还要靠批处理达人,因为一般情况下在XP下正常的……顶起
作者: gudou    时间: 2011-10-11 18:10

请求高手帮助……
作者: ygqiang    时间: 2011-10-11 23:08

最好先解决xp系统下的问题。

win7系统,与xp系统,差别比较大,不容易解决。

楼主为什么还要考虑网线未接的情况?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2