标题: [网络连接] [已解决]求批处理解决设置IP的问题,设置半静态IP~~ [打印本页]
作者: beck1321 时间: 2012-9-13 11:29 标题: [已解决]求批处理解决设置IP的问题,设置半静态IP~~
本帖最后由 beck1321 于 2012-9-14 23:16 编辑
目的:运行批处理后
电脑获取到的ip必须为192.168.2.0段的2-252 任意一个都可以
我的个人分析:(因为批处理我不专业,怀疑有个问题就是 是否可能会遇到ip冲突?如果可以希望能够实现遇到ip冲突则自动随机下一个ip。思路也可以改为,ping完2-252,在ping不通的里面随机挑一个,但这样也会有问题,比如其他哪台机器有防火墙ping不通但确实ip存在就也会冲突)仅供给高手参考
作者: beck1321 时间: 2012-9-13 23:21
我还想到一个思路可以满足我的要求
就是我搞一个文本,文本里放着我到时需要获取的若干IP
搞个批处理 第一行先获取这个文本里的任意一行ip
然后下面的就是传统的配置 mask 网关什么的。
作者: beck1321 时间: 2012-9-14 09:18
- @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: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
回复 5# beck1321
哦 在其他代码里 找到确定范围的 代码 其实就是 set /A "num=%RANDOM%%%100+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段,所以想用批处理实现。。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |