Windows 批量检查主机名是否存在

Windows Batch Check Hostname Exists

我想检查我的 PC 上是否存在主机名(即在 C:\Windows\System32\drivers\etc 下的 hosts 文件中找到)。

有没有办法使用批处理命令或其他方式查找它是否存在?

您可以做的是对您要查找的主机名执行 ping 操作,然后检查某些字符串,这将显示是否可以找到该主机名。看起来像这样(我猜):

@echo off
setlocal EnableDelayedExpansion
set /p input= "Hostname"
set hostexists=yes
For /f "tokens=1,2" %%a in ('ping -n 1 !input!') do (
    if "x%%a"=="xFOO" if "x%%b"=="xBAR" set hostexists=no
)
If "x!hostexists!"=="xno" (
echo. "Does not exist"
) ELSE (
echo. "Does exist"
Pause

基本思路是,当您尝试 ping 一个不可用的主机名时,您将从命令行获得特定的输出。自己尝试一下:打开 cmd.exe(点击 Windows-按钮 +R 并键入 cmd)并在命令行中写入 ping foobar 并稍等片刻。您应该会收到如下消息:Ping-Request 找不到 "foobar" [...]。您将前两个词放入代码中:第一个词到 FOO,第二个词到 BAR.

程序会检查 ping 命令的输出,并将前两个单词(=tokens)放入 %%a%%b 检查它们是否等于所需的单词,标记主机不存在。

我希望这会有所帮助 :) 不确定这是否是您想要的 :D

问候

geisterfurz007

使用一些额外的信息尝试这个批处理文件:

@echo off
set "SearchString=localhost"
set "LogFile=%userprofile%\Desktop\LogFile.txt"
set "hostspath=%windir%\System32\drivers\etc\hosts"
(
    Echo  **************************** General info ****************************
    Echo Running under: %username% on profile: %userprofile%
    Echo Computer name: %computername%
    Echo Operating System:
    wmic os get caption | findstr /v /r /c:"^$" /c:"^Caption"
    Echo Boot Mode:
    wmic COMPUTERSYSTEM GET BootupState | find "boot"
    Echo Antivirus software installed:
    wmic /Node:localhost /Namespace:\root\SecurityCenter2 Path AntiVirusProduct Get displayName | findstr /v /r /c:"^$" /c:"displayName"
    Echo Executed on: %date% @ %time%
    Echo  ********************* Hosts' File Contents with the string "%SearchString%" ************************
)>"%LogFile%"

for /f "delims=" %%a in ('Type "%hostspath%" ^| find /I "%SearchString%"') Do (
     echo %%a >> "%LogFile%"
)
Start "" "%LogFile%"

更简单、更可靠的解决方案

url.bat:

@echo off

set url=%1
ping -n 1 %url% > nul 2> nul
if "%errorlevel%"=="0" (
 echo %url% exists
) else (
 echo %url% does not exist
)

测试

> url.bat google.com
google.com exists

> url.bat google.commmmmm
google.commmmmm does not exist