【问题标题】:windows batch command to detect ip address from hosts filewindows批处理命令从hosts文件中检测ip地址
【发布时间】:2013-12-11 17:55:57
【问题描述】:

任何人都可以帮助我检测任何没有# 的语句,即。使用 Windows 批处理命令从主机文件 (/system32/drivers/etc/hosts) 中的非注释语句?

例如:在该文件中指定的 ip 地址不会有 #

【问题讨论】:

    标签: windows batch-file ip localhost host


    【解决方案1】:

    这对我有用:

    findstr "^[^#]*[0-9a-f][.:][0-9a-f]" c:\windows\system32\drivers\etc\hosts
    

    【讨论】:

    • IPV6 地址失败
    • 错误地检测到`#1.10什么都不做`(它在哈希之前有空格)
    • @MCND 好电话。我只想到 # 排在第一位。我觉得我现在很好。 Findstr 正则表达式很蹩脚吧
    • 抱歉,在 ::ffff:222.1.40.40 形式的 ipv6 地址中失败
    • @MCND 你确定吗?它应该与您示例的第三个冒号匹配,不是吗?即[^#]* 之后的部分应该匹配f:2,对吧?
    【解决方案2】:

    这将找到未注释的行

    find /v "#" < hosts
    

    【讨论】:

    • 未能检测到10.0.0.0 somewhere # this is informational
    • @MCND 是的,那行有评论。 :D 我知道这一点,但问题只是要求没有评论的行。
    【解决方案3】:

    不完全确定这不会留下未经过滤的东西。但是

    findstr /R /c:"^[^#]*[0-9a-f:.]" %systemroot%\system32\drivers\etc\hosts
    

    会出错吗?检测包含无效格式化 IP 地址解析的行(ej:IP 地址和无名称)但应删除任何注释/非活动行。

    【讨论】:

      【解决方案4】:

      此代码仅显示第一列中没有 # 的行,希望对您有所帮助:

      setlocal EnableDelayedExpansion
      for /f "delims=¶ tokens=*" %%A in ('"type %SystemRoot%\System32\drivers\etc\hosts"') do (
         set var=%%A
         if NOT "!var:~0,1!" == "#" (echo !var!)
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-25
        • 2018-08-06
        • 2012-02-28
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 2011-09-10
        • 1970-01-01
        相关资源
        最近更新 更多