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

[已解决][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 把支付宝帐号发我 虽然你没有直接完全解决我的问题,但给我提供了基础 还是要感谢的
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

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

TOP

回复 12# czjt1234


    是的  我一直都是绑定mac 但现在工作量太大了 一个人干活 不可能为每天来的若干重要客人 zf领导去绑定
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

随机IP就是讨厌

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

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

全部机器固定IP

TOP

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


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

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

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

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

回复 8# beck1321


    哦 在其他代码里 找到确定范围的 代码 其实就是 set /A "num=%RANDOM%%%101+100" 就可以实现100-200了
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

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

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

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

回复 3# ccstr


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

高手你完善一下咯
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

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

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

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

win2003什么的服务器版的windows也带dhcp功能

TOP

: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来手工试试就能看到了。
1

评分人数

    • beck1321: 完善后请报支付宝帐号技术 + 1

TOP

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

TOP

返回列表