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

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

[复制链接]
发表于 2012-11-18 14:36:41 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码

评分

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

查看全部评分

发表于 2012-11-18 18:57:56 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2012-11-19 11:01:53 | 显示全部楼层
谢谢板主,问题解决了.
 楼主| 发表于 2014-12-28 09:03:21 | 显示全部楼层
回复 2# tmplinshi
版主您好,不好意思又打绕您,该代码在WIN7下只显示“备用DNS”其他的都没显示,如果在WIN7下显示应怎么写,请指教。
发表于 2014-12-28 14:27:29 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-12-28 22:44:11 | 显示全部楼层
回复 5# tmplinshi
感谢版主的指教,我整不明白了,谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 21:33 , Processed in 0.019403 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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