标题: [已解决][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
- @echo off
- for /l %%a in (100,1,120) do (
- ping 10.3.3.%%a -w 1 -n 1|find /i "Lost = 1"&&set c=1||set c=0
- if !c!==0 (
- set ip=%%a
- goto :changeip
- )
- )
- exit
-
- :changeip
- rem 下面两个for是为了提取出你的网卡名称.
- for /f "tokens=2,* delims=: " %%p in ('ipconfig^|find "Ethernet adapter"') do (
- for /f "tokens=1 delims=:" %%i in ("%%q") do (
- set lanname=%%i
- )
- )
- rem 这里是开始改IP。DNS你也没说所以我用我自己的做了.
- netsh interface IP Set Address "%lanname%" Static 10.3.3.%ip% 255.255.255.0 10.3.3.254 1
- rem 下面这句是改主DNS,DNS按照你自己的修改.
- netsh interface ip set dns name="%lanname%" source=staticaddr=10.3.3.10
- rem 下面这句是改副DNS,不需要的话就把下面这句删掉就行.
- 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 编辑
- 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
- netsh interface ip set address name="本地连接" gateway=10.3.3.254 gwmetric=1
- netsh interface ip set dns "本地连接" source=static addr = 10.3.3.10
- 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已被使用的问题呢
等高手- @ echo off
- SetLocal EnableDelayedExpansion
- set Str=0123456789
- for /l %%L in (1 1 2) do (
- set /a n = !random! %% 10
- for %%n in (!n!) do set Out=!Out!!Str:~%%n,1!
- )
- set Nic=本地连接
- rem //可以根据你的需要更改,
- set Addr=10.3.3.!Out!
- set Mask=255.255.255.0
- set Gway=10.3.3.254
- set Dns1=10.3.3.10
- set Dns2=10.3.3.11
- rem //以上依次为IP地址、子网掩码、网关、首选DNS、备用DNS
- echo ------------------------------------------------------
- echo 正在对 [%nic%] 进行IP设置,请稍等
- rem //可以根据你的需要更改
- echo. IP地址 = %Addr%
- echo. 子网掩码 = %Mask%
- netsh interface ip set address name=%Nic% source=static addr=%Addr% mask=%Mask% >nul
- echo. 网关 = %Gway%
- netsh interface ip set address name=%Nic% gateway=%Gway% gwmetric=1 >nul
- echo. 首选DNS = %Dns1%
- netsh interface ip set dns name=%Nic% source=static addr=%Dns1% register=PRIMARY >nul
- echo. 备用DNS = %Dns2%
- netsh interface ip add dns name=%Nic% addr=%Dns2% index=2 >nul
- echo ------------------------------------------------------
- echo 设置完毕!
- 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
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |