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

[网络连接] [已解决]批处理如何根据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代码?

多谢
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

  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

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

601997526 发表于 2011-10-16 17:11



多谢。

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

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

谢谢

TOP

本帖最后由 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

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

楼上代码有问题?吗

我修改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
复制代码

TOP

本帖最后由 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
复制代码

TOP

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
复制代码

TOP

  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
复制代码
问题解决。

TOP

返回列表