我的主机文件包含地址:主机中的实体,并且想要检查主机文件中是否存在给定实体。所以我写道: 在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行不同的行,但没有任何反应,所以我想知道我错了吗?
答案 0 :(得分:2)
批处理比较运算符==
对空间敏感,必须展开变量以进行比较。必须删除==
运算符周围的空格,并且必须扩展变量或者只是比较变量名称。
if not "%line%"=="%find%" (
这是您的脚本的主要问题。但是,我建议使用find
命令来执行此任务。
find /v "129.0.2.2 tralala.com" "%systemroot%\system32\drivers\etc\hosts"