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

[文本处理] [已解决]批处理如何获取网关和备用DNS?

本帖最后由 dnvplj 于 2012-11-19 11:03 编辑

请各位朋友帮忙:把网关和备用DNS项填上,谢谢了
  1. @echo off
  2. for /f "tokens=15" %%i in ('ipconfig /all ^| find /i "IP Address"') do set ip=%%i  
  3. for /f "tokens=15" %%i in ('ipconfig /all ^| find /i "Subnet Mask"') do set mask=%%i
  4. 本处填写:网关  
  5. for /f "tokens=15" %%i in ('ipconfig /all ^| find /i "DNS Servers"') do set dns=%%i
  6. 本处填写:备用DNS  
  7. echo 本机IP为:%ip%  
  8. echo 子网掩码:%mask%
  9. echo 本机网关:
  10. echo 首选 DNS:%dns%
  11. echo 备用 DNS:  
  12. paus
复制代码
1

评分人数

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

回复 5# tmplinshi
感谢版主的指教,我整不明白了,谢谢了。

TOP

本帖最后由 tmplinshi 于 2014-12-28 15:03 编辑

回复 4# dnvplj
因为在 WIN7 下,ipconfig /all 输出的是汉化后的文字,所以导致 findstr 查找不到英文单词。

解决方法:

  • 方法1:在 findstr 命令里,增加查找中文字符。
  • 方法2:运行 chcp 437 将内部代码页切换为英文,再执行 ipconfig /all | findstr ...
              如果之后你还要显示中文字符,那么还要运行 graftabl 936 启用中文字符集显示。
    1. @echo off
    2. setlocal enabledelayedexpansion
    3. CHCP 437 >nul
    4. set command=" ipconfig /all | findstr /c:"IP Address" /c:"IPv4 Address" /c:"Subnet Mask" /rc:"Gateway.*[0-9].*" /c:"DNS Servers" /rc:"[ ][ ][ ]*[0-9]" "
    5. for /f "tokens=1,2,*" %%a in (' %command% ') do (
    6.     if "%%b"=="" (
    7.         set DNS_Servers2=%%a
    8.     ) else (
    9.         set value=%%c
    10.         set value=!value:*:=!
    11.         set %%a_%%~nb=!value:* =!
    12.     )
    13. )
    14. If not defined IP_Address (
    15.         for /f "delims=(" %%a in ("%IPv4_Address%") do (
    16.                 set "IP_Address=%%a"
    17.         )
    18. )
    19. GRAFTABL 936 >nul
    20. echo 本机IP为:%IP_Address%  
    21. echo 子网掩码:%Subnet_Mask%
    22. echo 本机网关:%Default_Gateway%
    23. echo 首选 DNS:%DNS_Servers%
    24. echo 备用 DNS:%DNS_Servers2%
    25. pause
    复制代码
1

评分人数

TOP

回复 2# tmplinshi
版主您好,不好意思又打绕您,该代码在WIN7下只显示“备用DNS”其他的都没显示,如果在WIN7下显示应怎么写,请指教。

TOP

谢谢板主,问题解决了.

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set command=" ipconfig /all | findstr /c:"IP Address" /c:"Subnet Mask" /rc:"Gateway.*[0-9].*" /c:"DNS Servers" /rc:"[ ][ ][ ]*[0-9]" "
  4. for /f "tokens=1,2,*" %%a in (' %command% ') do (
  5.     if "%%b"=="" (
  6.         set DNS_Servers2=%%a
  7.     ) else (
  8.         set value=%%c
  9.         set value=!value:*:=!
  10.         set %%a_%%~nb=!value:* =!
  11.     )
  12. )
  13. echo 本机IP为:%IP_Address%  
  14. echo 子网掩码:%Subnet_Mask%
  15. echo 本机网关:%Default_Gateway%
  16. echo 首选 DNS:%DNS_Servers%
  17. echo 备用 DNS:%DNS_Servers2%
  18. pause
复制代码

TOP

返回列表