使用Windows 7中的批处理脚本检查实体的hosts文件?

时间:2014-11-03 16:28:06

标签: windows batch-file scripting hosts

我的主机文件包含地址:主机中的实体,并且想要检查主机文件中是否存在给定实体。所以我写道: 在hosts文件中:

# Copyright (c) 1993-2009 Microsoft Corp.
129.0.2.2 tralala.com

在我的批处理脚本中,我写道:

@if "%DEBUG%" == "" @echo off

@rem ############################################
@rem # Remove host from windows hosts file      #
@rem ############################################

if "%OS%"=="Windows_NT" setlocal

:start
set "hostpath=%systemroot%\system32\drivers\etc\hosts"
goto addFindIPAddress

:addFindIPAddress
@rem set the string you wish to find
set find="129.0.2.2 tralala.com"
goto checkHosts

:checkHosts
for /f "tokens=*" %%a in (%hostpath%) do call :processline %%a
goto :mainEnd

:processline
set line=%*
if NOT line == find (
echo %line%
)
goto :eof

:mainEnd
if "%OS%"=="Windows_NT" endlocal
PAUSE

所以我想要打印所有与find行不同的行,但没有任何反应,所以我想知道我错了吗?

1 个答案:

答案 0 :(得分:2)

批处理比较运算符==对空间敏感,必须展开变量以进行比较。必须删除==运算符周围的空格,并且必须扩展变量或者只是比较变量名称。

if not "%line%"=="%find%" (

这是您的脚本的主要问题。但是,我建议使用find命令来执行此任务。

find /v "129.0.2.2 tralala.com" "%systemroot%\system32\drivers\etc\hosts"