`我目前正在努力检查文本文件是否包含域名,如果包含,我将显示域名的 IP 地址,如果不包含,我想要一条错误消息“在此找不到域名”要显示的文件”
我尝试向我的代码发送文本,看看如果输入没有域名的文件,它是否显示正确的错误消息,但它没有 这是我的代码
for /f "tokens=*" %%G in (%FILENAME%) do (
nslookup %%G >nul &1
if "!errorlevel!"=="0" (
echo Domain Name: %%G
set ip=
for /f "tokens=1*" %%H in ('nslookup %%G 2^>nul ^|more +3 ^| findstr /R /C:"[1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*"') do (
if !ip! equ 1 (
echo IP Address: %%H
set ip=
) else (
echo %%H
)
)
echo ---------------------------
)
)
if not "%errorlevel%"=="0" (
echo No domain names found in this file
exit /b
)
:end
exit /b
仅在循环之后检查 if 条件中 errorlevel 的使用。此检查无法充分确定是否处理了任何有效域,因为它仍然仅受上次执行 nslookup 的影响。该脚本假定文件中的任何行都是域名,而不对其进行验证。在尝试 nslookup 之前,您可能需要添加模式检查以确保该行可能是域名。
@echo off
setlocal enabledelayedexpansion
set FILENAME=yourfile.txt
set found=0
for /f "tokens=*" %%G in (%FILENAME%) do (
nslookup %%G >nul 2>&1
if "!errorlevel!"=="0" (
set found=1
echo Domain Name: %%G
for /f "tokens=2 delims=: " %%H in ('nslookup %%G 2^>nul ^| findstr /R /C:"Address: [1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*"') do (
echo IP Address: %%H
)
echo ---------------------------
)
)
if "!found!"=="0" (
echo No domain names found in this file.
)
endlocal