FINDSTR命令的ERRORLEVEL总是返回0

时间:2019-04-19 08:29:01

标签: batch-file cmd

我必须在某些设备上的主机文件中删除一个条目。 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%

0 个答案:

没有答案