找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30123|回复: 7

[网络连接] [已解决]批处理如何根据ip地址的特性,智能修改网关?

[复制链接]
发表于 2011-10-16 16:28:25 | 显示全部楼层 |阅读模式
本帖最后由 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代码?

多谢

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-10-16 17:11:59 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr /c:"IP Address"') do set i=%%i
  3. for /f "tokens=1,2,3,4 delims=." %%i in ("%i%") do set Gateway=%%i.%%j.%%k.1
  4. netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1 >nul&&echo 你的网关已经设定为           %Gateway%
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-10-16 17:47:08 | 显示全部楼层
601997526 发表于 2011-10-16 17:11



多谢。

可能是我没有说清楚要求:

1、只有是那3个类型的ip地址,才修改对应的网关
2、如果是别的类型ip地址,就不用修改了

谢谢
发表于 2011-10-16 21:48:57 | 显示全部楼层
本帖最后由 lxzzr 于 2011-10-17 07:53 编辑

回复 3# ygqiang
  1. @echo off

  2. for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /c:"IP Address"') do set i=%%i
  3. for /f "tokens=1,2,3,4 delims=." %%i in ("%i: =%") do ( set Gateway=%%i.%%j.%%k.1


  4. if "%%i.%%j.%%k" == "10.10.93"  goto :setup
  5. if "%%i.%%j.%%k" == "10.10.94"  goto :setup
  6. if "%%i.%%j.%%k" == "10.10.127" goto :setup
  7. )

  8. echo 未做更改
  9. goto :end


  10. :setup
  11. netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1
  12. echo 你的网关已经设定为: %Gateway%


  13. :end
  14. echo.
  15. pause

复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-10-17 00:34:08 | 显示全部楼层
楼上代码有问题?吗

我修改ip为:10.10.93.45

1、运行楼上的代码,会提示:未做更改

2、运行下面的代码,会提示:网关已经设定成10.10.93.1
  1. @echo off
  2. set a=0
  3. :start
  4. set /a a+=1
  5. for /f "skip=1 tokens=%a% delims=." %%i in ('wmic path Win32_NetworkAdapterConfiguration get ipaddress') do (
  6. set s=%%i
  7. goto next
  8. )

  9. :next
  10. if %a%==1 set j=%s:~2%
  11. if %a%==2 set k=%s%
  12. if %a%==3 set l=%s%
  13. if %a% lss 3 goto start

  14. if "%l%"=="93" goto end
  15. if "%l%"=="94" goto end
  16. if "%l%"=="127" goto end
  17. goto continue

  18. :end
  19. set Gateway=%j%.%k%.%l%.1
  20. netsh interface ip set address name="本地连接" gateway=%Gateway% gwmetric=1 >nul&&echo 你的网关已经设定为 %Gateway%
  21. pause
  22. exit
  23. :continue
  24. echo 网关无需修改
  25. pause
复制代码
 楼主| 发表于 2011-10-17 00:45:31 | 显示全部楼层
本帖最后由 ygqiang 于 2011-10-17 01:08 编辑

4楼修改后的代码,就正常了。


  1. for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /c:"IP Address"') do set i=%%i
  2. for /f "tokens=1,2,3,4 delims=." %%i in ("%i: =%") do (set Gateway=%%i.%%j.%%k.1
  3. set date=%%i.%%j.%%k)

  4. if "%date%" == "10.10.9"  goto set1
  5. if "%date%" == "10.10.93"  goto set1
  6. if "%date%" == "10.10.94"  goto set1
  7. if "%date%" == "10.10.127" goto set1

  8. echo 未做更改
  9. pause
  10. goto :continue

  11. :set1
  12. netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1
  13. echo 你的网关已经设定为: %Gateway%

  14. pause


  15. :continue
复制代码
 楼主| 发表于 2011-10-17 09:31:12 | 显示全部楼层
6楼的代码,有人说:“得出来的IP地址前面多一个空格的。”

再次修改如下:
  1. for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do set i=%%i
  2. for /f "tokens=1,2,3 delims=." %%i in ("%i%") do (set a=%%i.%%j.%%k)
  3. set Gateway=%a%.1

  4. if "%a%" == "10.10.9"  goto set1
  5. if "%a%" == "10.10.93"  goto set1
  6. if "%a%" == "10.10.94"  goto set1
  7. if "%a%" == "10.10.127" goto set1

  8. echo 未做更改
  9. goto :continue

  10. :set1
  11. netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1
  12. echo 你的网关已经设定为: %Gateway%

  13. :continue
复制代码
 楼主| 发表于 2011-11-12 20:45:12 | 显示全部楼层
  1. for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do set i=%%i
  2. for /f "tokens=1,2,3 delims=." %%i in ("%i%") do (set a=%%i.%%j.%%k)
  3. set Gateway=%a%.1

  4. if "%a%" == "10.10.9"  goto set1
  5. if "%a%" == "10.10.93"  goto set1
  6. if "%a%" == "10.10.94"  goto set1
  7. if "%a%" == "10.10.127" goto set1

  8. echo 未做更改
  9. goto :continue

  10. :set1
  11. netsh i i set address name="本地连接" gateway=%Gateway% gwmetric=1
  12. echo 你的网关已经设定为: %Gateway%


  13. :continue
复制代码
问题解决。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:55 , Processed in 0.030092 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表