Board logo

标题: [已解决][20元]求批处理解决设置IP的问题 [打印本页]

作者: beck1321    时间: 2012-9-13 11:02     标题: [已解决][20元]求批处理解决设置IP的问题

本帖最后由 beck1321 于 2012-9-14 16:46 编辑

目的:运行批处理后
电脑获取到的ip必须为192.168.2.0段的2-252 任意一个都可以
我的个人分析:(因为批处理我不专业,怀疑有个问题就是 是否可能会遇到ip冲突?如果可以希望能够实现遇到ip冲突则自动随机下一个ip。思路也可以改为,ping完2-252,在ping不通的里面随机挑一个,但这样也会有问题,比如其他哪台机器有防火墙ping不通但确实ip存在就也会冲突)仅供给高手参考

小金额 不罗嗦 先发的成功的那位 直接发(站内短信也可)支付宝帐号打款

如果你觉得这个批处理你做出来不止这个价格,您也可以发帖哦
=


-====补充
已经解决了。看来到这发帖不如发百度
不过还是要感谢lx的那位ccstr
过会儿我把代码贴出来
ccstr 把支付宝帐号发我 虽然你没有直接完全解决我的问题,但给我提供了基础 还是要感谢的
作者: beck1321    时间: 2012-9-13 23:21

我还想到一个思路可以满足我的要求
就是我搞一个文本,文本里放着我到时需要获取的若干IP
搞个批处理 第一行先获取这个文本里的任意一行ip
然后下面的就是传统的配置 mask 网关什么的。
作者: ccstr    时间: 2012-9-14 01:55

:start
set /A "num=%RANDOM%%%251+2"
netsh interface ip set address name="本地连接" source=static addr=192.168.2.%num% mask=255.255.255.0 | find "XXXXXXXXXX"
netsh interface ip set wins name="本地连接" source=static addr=none
if %errorlevel% neq 0 goto start

其中 XXXXXXXXXX 是指如果 IP 冲突了就会报出来说“XXIP已有人使用”的那句话。大概是这么一句话,找个肯定会冲突的IP来手工试试就能看到了。
作者: czjt1234    时间: 2012-9-14 08:27

任何路由都有dhcp自动分配ip的功能,就是和你说的一样

你只要把dhcp的范围改成2.2~2.252就行了

如果没有路由,那么tftp软件有这个功能,一个小文件,很小的

win2003什么的服务器版的windows也带dhcp功能
作者: beck1321    时间: 2012-9-14 09:12

回复 3# ccstr


    windows系统提示了冲突,但没发现这个批处理弹出冲突提示,也没有遇到冲突后自动设置下一随机ip,而是关闭了窗口,只能再次手动运行一遍

高手你完善一下咯
作者: beck1321    时间: 2012-9-14 09:17

  1. @echo off
  2. for /l %%a in (100,1,120) do (
  3. ping 10.3.3.%%a -w 1 -n 1|find /i "Lost = 1"&&set c=1||set c=0
  4. if !c!==0 (
  5. set ip=%%a
  6. goto :changeip
  7. )
  8. )
  9. exit
  10. :changeip
  11. rem 下面两个for是为了提取出你的网卡名称.
  12. for /f "tokens=2,* delims=: " %%p in ('ipconfig^|find "Ethernet adapter"') do (
  13. for /f "tokens=1 delims=:" %%i in ("%%q") do (
  14. set lanname=%%i
  15. )
  16. )
  17. rem 这里是开始改IP。DNS你也没说所以我用我自己的做了.
  18. netsh interface IP Set Address "%lanname%" Static 10.3.3.%ip% 255.255.255.0 10.3.3.254 1
  19. rem 下面这句是改主DNS,DNS按照你自己的修改.
  20. netsh interface ip set dns name="%lanname%" source=staticaddr=10.3.3.10
  21. rem 下面这句是改副DNS,不需要的话就把下面这句删掉就行.
  22. netsh interface ip add dns "%lanname%" 10.3.3.11 index=2
复制代码
这是我从网上百度到的,可惜只是ping一下就关闭了。,。。不知道错在哪
我觉得他这个挺好的 至少我没看到“本地连接”的字样 应该设置ip不受名字的限制吧
作者: beck1321    时间: 2012-9-14 09:25

本帖最后由 beck1321 于 2012-9-14 09:26 编辑
  1. for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find/i "ip address"')do for /f "tokens=4 delims=." %%b in ("%%a") do netsh interface ip set address name="本地连接" source=static addr=10.3.3.%%b mask=255.255.255.0
  2. netsh interface ip set address name="本地连接" gateway=10.3.3.254 gwmetric=1
  3. netsh interface ip set dns "本地连接" source=static addr = 10.3.3.10
  4. netsh interface ip add dns "本地连接" addr= 10.3.3.11
复制代码
还有这个代码 也是百度到的
但是不知道如何对范围进行一个限定,以及ip冲突后是否能自动获取下一随机ip
作者: beck1321    时间: 2012-9-14 09:40

好吧 不得不承认这个 适用于不管他本地连接叫什么名字,但还有两点
1、代码我没看懂,假设我要设置100-200呢?1-255太多了
2、如何加入辨别Ip已被使用的问题呢
等高手
  1. @ echo off
  2.     SetLocal EnableDelayedExpansion
  3.     set Str=0123456789
  4.     for /l %%L in (1 1 2) do (
  5.     set /a n = !random! %% 10
  6.     for %%n in (!n!) do set Out=!Out!!Str:~%%n,1!
  7. )
  8.   set Nic=本地连接
  9.   rem //可以根据你的需要更改,
  10.   set Addr=10.3.3.!Out!
  11.   set Mask=255.255.255.0
  12.   set Gway=10.3.3.254
  13.   set Dns1=10.3.3.10
  14.   set Dns2=10.3.3.11
  15.   rem //以上依次为IP地址、子网掩码、网关、首选DNS、备用DNS
  16.   echo ------------------------------------------------------
  17.   echo 正在对 [%nic%] 进行IP设置,请稍等
  18.     rem //可以根据你的需要更改
  19.   echo. IP地址 = %Addr%
  20.   echo. 子网掩码 = %Mask%
  21.   netsh interface ip set address name=%Nic% source=static addr=%Addr% mask=%Mask% >nul
  22.   echo. 网关 = %Gway%
  23.   netsh interface ip set address name=%Nic% gateway=%Gway% gwmetric=1 >nul
  24.   echo. 首选DNS = %Dns1%
  25.   netsh interface ip set dns name=%Nic% source=static addr=%Dns1% register=PRIMARY >nul
  26.   echo. 备用DNS = %Dns2%
  27.   netsh interface ip add dns name=%Nic% addr=%Dns2% index=2 >nul
  28.       echo ------------------------------------------------------
  29.   echo 设置完毕!
  30.     echo
复制代码

作者: beck1321    时间: 2012-9-14 09:55

本帖最后由 beck1321 于 2012-9-14 17:51 编辑

回复 8# beck1321


    哦 在其他代码里 找到确定范围的 代码 其实就是 set /A "num=%RANDOM%%%101+100" 就可以实现100-200了
作者: beck1321    时间: 2012-9-14 10:24

  1. for /l %%a in (100,1,200) do (ping -n 1 10.3.3.%%a | find "Request timed out" && echo 10.3.3.%%a >>f:\ip不通.txt)
复制代码
本来我有个想法就是 ping不通的进入一个txt 然后再获取txt中的任何一个ip
这样就大大避免了ip冲突
但我发现 100-200全部ping完需要很久
。。。。
作者: beck1321    时间: 2012-9-14 10:39

本来我有个想法就是 ping不通的进入一个txt 然后再获取txt中的任何一个ip
这样就大大避免了ip冲突
但我发 ...
beck1321 发表于 2012-9-14 10:24


   
我傻了,我的问题是 还没获取到ip呢 怎么能ping别人呢。。。

我们公司是这样的 默认大家都是自动获取,网段为10.3.3.X  需要访问一个东西的时候需要手动改为192.168.1.X段,所以想用批处理实现。。
作者: czjt1234    时间: 2012-9-15 22:57

随机IP就是讨厌

我公司的全在路由上绑定ipmac

需要联网的电脑全来我这里申请IP

全部机器固定IP
作者: beck1321    时间: 2012-9-19 14:46

回复 12# czjt1234


    是的  我一直都是绑定mac 但现在工作量太大了 一个人干活 不可能为每天来的若干重要客人 zf领导去绑定
作者: netbenton    时间: 2012-9-19 16:43

有多少电脑?每台电脑都固定不就行了。




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