You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用批处理脚本检测文本文件中的域名并显示对应IP

批处理脚本无法检测到无域名文件的问题修复

问题根源

  1. for /f循环执行逻辑缺陷:当文件中没有可解析的域名时,循环体完全不会执行,循环外的%errorlevel%会保留脚本执行前的初始值(通常为0),无法触发错误提示。
  2. 语法错误:原代码中nslookup %%G >nul &1是错误写法,正确的屏蔽所有输出和错误的语法应为nslookup %%G >nul 2>&1。
  3. errorlevel依赖不可靠:errorlevel会被脚本中其他命令覆盖,无法准确记录是否找到过有效域名。

修复方案

使用自定义标记变量跟踪是否找到过可解析的域名,替代对errorlevel的依赖:

  • 初始化标记变量为0,表示未找到有效域名
  • 每次成功解析域名时,将标记变量设为1
  • 循环结束后,根据标记变量的值判断是否输出错误提示

同时优化IP提取逻辑,让输出更清晰。

修正后的完整代码

@echo off
setlocal enabledelayedexpansion

:: 初始化标记变量,0=未找到有效域名,1=找到有效域名
set "found_domain=0"

for /f "tokens=*" %%G in (%FILENAME%) do (
    :: 屏蔽nslookup的所有输出与错误信息
    nslookup %%G >nul 2>&1
    if !errorlevel! equ 0 (
        set "found_domain=1"
        echo Domain Name: %%G
        echo IP Addresses:
        :: 精准提取并显示解析到的IP地址
        for /f "tokens=2 delims=:" %%H in ('nslookup %%G 2^>nul ^| findstr /R /C:"Address:  [0-9]"') do (
            echo   %%H
        )
        echo ---------------------------
    )
)

:: 根据标记变量判断是否输出错误提示
if !found_domain! equ 0 (
    echo No domain names found in this file
    exit /b 1
)

:end
exit /b 0

关键修改说明

  • 标记变量found_domain:通过该变量明确跟踪有效域名的查找状态,避免依赖不稳定的errorlevel。
  • 修正nslookup输出屏蔽:>nul 2>&1正确屏蔽标准输出和错误输出,避免干扰脚本逻辑。
  • 优化IP提取逻辑:使用findstr精准匹配IP行,再通过分隔符提取IP内容,输出结果更规整。
  • 延迟扩展启用:确保循环内的变量能实时更新和读取,保证逻辑正确性。

内容的提问来源于stack exchange,提问作者Wuraola Salawu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:52:23