Board logo

标题: [网络连接] 各位大神帮看看,切换内外网IP的批处理到底错在那里? [打印本页]

作者: wzt8827    时间: 2022-12-29 19:46     标题: 各位大神帮看看,切换内外网IP的批处理到底错在那里?

各位大神帮看看,我到底错在那里。感谢的话不多说了。直接上代码。
  1. @echo off
  2. cls
  3. color 3f
  4. mode con cols=80 lines=30
  5. title 自动IP地址切换脚本
  6. rem 网络连接名称
  7. set nic=""
  8. for /f %%a in (c:\IPdress.txt) do (set nic=%%a)
  9. rem 静态 IP 地址
  10. set ip=""
  11. for /f "skip=1 tokens=1" %%b in (c:\IPdress.txt) do (set ip=%%b)
  12. rem 子网掩码
  13. set subnetMask=""
  14. for /f "skip=1 tokens=1" %%c in (c:\IPdress.txt) do (set subnetMask=%%c)
  15. rem 默认网关
  16. set defaultGateway=""
  17. for /f "skip=2 tokens=1" %%d in (c:\IPdress.txt) do (set defaultGateway=%%d)
  18. rem 首选 DNS 服务器
  19. set dns1=""
  20. for /f "skip=3 tokens=1" %%e in (c:\IPdress.txt) do (set dns1=%%e)
  21. rem 备用 DNS 服务器
  22. set dns2=""
  23. for /f "skip=4 tokens=1" %%f in (c:\IPdress.txt) do (set dns2=%%f)
  24. :start
  25. cls
  26. echo=
  27. echo ============================================================================
  28. echo=
  29. echo                             1.切换到 内网 IP
  30. echo=
  31. echo                             2.切换到 外网 IP
  32. echo=
  33. echo                             3.设置  IP  地址
  34. echo=
  35. echo                             0.退 出 本 程 序
  36. echo=
  37. echo ============================================================================
  38. set choice=
  39. set /p choice=请输入编号(1、2、3、0),并按回车键结束:
  40. if "%choice%"=="1" goto setStaticIP
  41. if "%choice%"=="2" goto setDHCP
  42. if "%choice%"=="3" goto setIPdress
  43. if "%choice%"=="0" goto end
  44. echo "%choice%" 是无效的,请重新输入
  45. echo.
  46. goto start
  47. :setStaticIP
  48. rem 网络连接名称 静态 IP 地址 子网掩码 默认网关
  49. netsh interface ipv4 set address name=%nic% static %ip% %subnetMask% %defaultGateway%
  50. pause
  51. netsh interface ipv4 add dns name=%nic% addr=%dns1% > nul
  52. pause
  53. netsh interface ipv4 add dns name=%nic% addr=%dns2% index=2 > nul
  54. pause
  55. cls
  56. echo=
  57. echo ============================================================================
  58. echo=
  59. echo                             已成功转换为内网IP
  60. echo=
  61. echo                             4.返回主界面
  62. echo=
  63. echo                             0.退出本程序
  64. echo=
  65. echo ============================================================================
  66. set choice=
  67. set /p choice=请输入编号(4、0),并按回车键结束:
  68. if "%choice%"=="4" goto start
  69. if "%choice%"=="0" goto end
  70. echo "%choice%" 是无效的,请重新输入
  71. echo.
  72. goto start
  73. :setDHCP
  74. rem 自动从 DHCP 服务器获取 IP 地址
  75. netsh interface ipv4 set address name=%nic% dhcp
  76. netsh interface ipv4 set dns name=%nic% dhcp
  77. cls
  78. echo=
  79. echo ============================================================================
  80. echo=
  81. echo                            已成功转换为外网IP
  82. echo=
  83. echo                            4.返回主界面
  84. echo=
  85. echo                            0.退出本程序
  86. echo=
  87. echo ============================================================================
  88. set choice=
  89. set /p choice=请输入编号(4、0),并按回车键结束:
  90. if "%choice%"=="4" goto start
  91. if "%choice%"=="0" goto end
  92. echo "%choice%" 是无效的,请重新输入
  93. echo.
  94. goto start
  95. :setIPdress
  96. rem 手动输入 IP 地址
  97. set /p str=请输入:
  98. if not defined str (echo 未输入任意内容,按任意键返回&pause>nul&goto start)
  99. >"c:\IPdress.txt" echo;%str%
  100. cls
  101. echo=
  102. echo ============================================================================
  103. echo=
  104. echo                            IP地址已成功保存
  105. echo=
  106. echo                            4.返回主界面
  107. echo=
  108. echo                            0.退出本程序
  109. echo=
  110. echo ============================================================================
  111. set choice=
  112. set /p choice=请输入编号(4、0),并按回车键结束:
  113. if "%choice%"=="4" goto start
  114. if "%choice%"=="0" goto end
  115. echo "%choice%" 是无效的,请重新输入
  116. echo.
  117. goto start
  118. :end
  119. exit
复制代码
c:\IPdress.txt文件内容:
以太网
192.168.1.166
255.255.225.0
192.168.1.1
202.97.224.56
115.115.115.115

求各位大神指点。
作者: yakeyun    时间: 2022-12-29 20:23

本帖最后由 yakeyun 于 2022-12-29 20:27 编辑

回复 1# wzt8827

你之前的代码变量取值有问题

最前面可以换成:
@echo off & setlocal enabledelayedexpansion
for /f "tokens=2 delims=^=" %%a in ('type "C:\IPdress.txt" ^|find /i "InsideIP"') do set InsideIP=%%a & echo,内网IP:!InsideIP!
for /f "tokens=2 delims=^=" %%a in ('type "C:\IPdress.txt" ^|find /i "OutsideIP"') do set OutsideIP=%%a & echo,外网IP:!OutsideIP!
for /f "tokens=2 delims=^=" %%a in ('type "C:\IPdress.txt" ^|find /i "dns1"') do set dns1=%%a & echo,首选DNS:!dns1!
for /f "tokens=2 delims=^=" %%a in ('type "C:\IPdress.txt" ^|find /i "dns2"') do set dns2=%%a & echo,备选DNS:!dns2!
for /f "tokens=2 delims=^=" %%a in ('type "C:\IPdress.txt" ^|find /i "DefaultGateway"') do set DefaultGateway=%%a & echo,默认网关:!DefaultGateway!
timeout /t 3 >nul
cls


IPdress.txt文件内容换成配置文件格式:
InsideIP=192.168.1.166
OutsideIP=202.97.224.56
dns1=255.255.225.0
dns2=115.115.115.115
DefaultGateway=192.168.1.1
作者: wzt8827    时间: 2022-12-30 13:18

回复 2# yakeyun


    感谢二楼,多谢指点




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2