[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] [已解决]求批处理解决设置IP的问题,设置半静态IP~~

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

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

我还想到一个思路可以满足我的要求
就是我搞一个文本,文本里放着我到时需要获取的若干IP
搞个批处理 第一行先获取这个文本里的任意一行ip
然后下面的就是传统的配置 mask 网关什么的。
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

  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不受名字的限制吧
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

  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
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

好吧 不得不承认这个 适用于不管他本地连接叫什么名字,但还有两点
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
复制代码
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

回复 5# beck1321


      哦 在其他代码里 找到确定范围的 代码 其实就是 set /A "num=%RANDOM%%%100+100" 就可以实现100-200了

是不是意味着 这人写复杂了。。。
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

  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完需要很久
。。。。
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

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



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

我们公司是这样的 默认大家都是自动获取,网段为10.3.3.X  需要访问一个东西的时候需要手动改为192.168.1.X段,所以想用批处理实现。。
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

返回列表