标题: [网络连接] [已解决]批处理如何根据ip地址的特性,智能修改网关? [打印本页]
作者: ygqiang 时间: 2011-10-16 16:28 标题: [已解决]批处理如何根据ip地址的特性,智能修改网关?
本帖最后由 ygqiang 于 2011-11-12 20:45 编辑
批处理如何根据ip地址的特性,智能修改网关?
在xp系统,单网卡情况下,如何根据ip地址的特性,智能修改网关?
ip地址是:10.10.93.xx 网关就修改成:10.10.93.1
ip地址是:10.10.94.xx 网关就修改成:10.10.94.1
ip地址是:10.10.127.xx 网关就修改成:10.10.127.1
如果是别的类型的ip地址,就不修改什么设置 直接运行:continue后面的代码
如何写bat代码?
多谢
作者: 601997526 时间: 2011-10-16 17:11
- @echo off
- for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr /c:"IP Address"') do set i=%%i
- for /f "tokens=1,2,3,4 delims=." %%i in ("%i%") do set Gateway=%%i.%%j.%%k.1
- netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1 >nul&&echo 你的网关已经设定为 %Gateway%
- pause
复制代码
作者: ygqiang 时间: 2011-10-16 17:47
601997526 发表于 2011-10-16 17:11
多谢。
可能是我没有说清楚要求:
1、只有是那3个类型的ip地址,才修改对应的网关
2、如果是别的类型ip地址,就不用修改了
谢谢
作者: lxzzr 时间: 2011-10-16 21:48
本帖最后由 lxzzr 于 2011-10-17 07:53 编辑
回复 3# ygqiang - @echo off
-
- for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /c:"IP Address"') do set i=%%i
- for /f "tokens=1,2,3,4 delims=." %%i in ("%i: =%") do ( set Gateway=%%i.%%j.%%k.1
-
-
- if "%%i.%%j.%%k" == "10.10.93" goto :setup
- if "%%i.%%j.%%k" == "10.10.94" goto :setup
- if "%%i.%%j.%%k" == "10.10.127" goto :setup
- )
-
- echo 未做更改
- goto :end
-
-
- :setup
- netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1
- echo 你的网关已经设定为: %Gateway%
-
-
- :end
- echo.
- pause
复制代码
作者: ygqiang 时间: 2011-10-17 00:34
楼上代码有问题?吗
我修改ip为:10.10.93.45
1、运行楼上的代码,会提示:未做更改
2、运行下面的代码,会提示:网关已经设定成10.10.93.1- @echo off
- set a=0
- :start
- set /a a+=1
- for /f "skip=1 tokens=%a% delims=." %%i in ('wmic path Win32_NetworkAdapterConfiguration get ipaddress') do (
- set s=%%i
- goto next
- )
-
- :next
- if %a%==1 set j=%s:~2%
- if %a%==2 set k=%s%
- if %a%==3 set l=%s%
- if %a% lss 3 goto start
-
- if "%l%"=="93" goto end
- if "%l%"=="94" goto end
- if "%l%"=="127" goto end
- goto continue
-
- :end
- set Gateway=%j%.%k%.%l%.1
- netsh interface ip set address name="本地连接" gateway=%Gateway% gwmetric=1 >nul&&echo 你的网关已经设定为 %Gateway%
- pause
- exit
- :continue
- echo 网关无需修改
- pause
复制代码
作者: ygqiang 时间: 2011-10-17 00:45
本帖最后由 ygqiang 于 2011-10-17 01:08 编辑
4楼修改后的代码,就正常了。- for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /c:"IP Address"') do set i=%%i
- for /f "tokens=1,2,3,4 delims=." %%i in ("%i: =%") do (set Gateway=%%i.%%j.%%k.1
- set date=%%i.%%j.%%k)
-
- if "%date%" == "10.10.9" goto set1
- if "%date%" == "10.10.93" goto set1
- if "%date%" == "10.10.94" goto set1
- if "%date%" == "10.10.127" goto set1
-
- echo 未做更改
- pause
- goto :continue
-
- :set1
- netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1
- echo 你的网关已经设定为: %Gateway%
-
- pause
-
-
- :continue
复制代码
作者: ygqiang 时间: 2011-10-17 09:31
6楼的代码,有人说:“得出来的IP地址前面多一个空格的。”
再次修改如下:- for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do set i=%%i
- for /f "tokens=1,2,3 delims=." %%i in ("%i%") do (set a=%%i.%%j.%%k)
- set Gateway=%a%.1
-
- if "%a%" == "10.10.9" goto set1
- if "%a%" == "10.10.93" goto set1
- if "%a%" == "10.10.94" goto set1
- if "%a%" == "10.10.127" goto set1
-
- echo 未做更改
- goto :continue
-
- :set1
- netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1
- echo 你的网关已经设定为: %Gateway%
-
- :continue
复制代码
作者: ygqiang 时间: 2011-11-12 20:45
- for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do set i=%%i
- for /f "tokens=1,2,3 delims=." %%i in ("%i%") do (set a=%%i.%%j.%%k)
- set Gateway=%a%.1
-
- if "%a%" == "10.10.9" goto set1
- if "%a%" == "10.10.93" goto set1
- if "%a%" == "10.10.94" goto set1
- if "%a%" == "10.10.127" goto set1
-
- echo 未做更改
- goto :continue
-
- :set1
- netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1
- echo 你的网关已经设定为: %Gateway%
-
-
- :continue
复制代码
问题解决。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |