我必须在某些设备上的主机文件中删除一个条目。 FINDSTR
命令有效,但始终返回errorlevel
0
。
我知道默认情况下,%errorlevel%
总是 0
。
因此,如果先前的命令未设置错误代码,它将始终返回0
。
我基本上需要在hosts文件中找到一个字符串,如果存在,它应该保存一个新的hosts文件,而没有包含该字符串的行。
这就是我的工作
set HOSTSFILE=%WINDIR%\system32\drivers\etc\hosts
set TEMP_HOSTS=%TEMP%\%RANDOM%__hosts
FINDSTR /V /I /C:"string to search for" "%HOSTSFILE%" > "%TEMP_HOSTS%"
IF %ERRORLEVEL% EQU 0 COPY /b/v/y "%TEMP_HOSTS%" "%HOSTSFILE%"
这基本上可行。但是,以上代码将始终返回errorlevel
0
,因此即使主机名中不存在该字符串,总是会复制到hosts文件中。文件。
我知道这并不重要,但是我很好奇errorlevel
为什么在这里不起作用?
errorlevel
应该由上一个命令设置,在本例中为FINDSTR
。
我也尝试使用FIND
命令和!errorlevel!
而不是%errorlevel%
。