Я должен удалить запись в файле hosts на некоторых устройствах.Команда 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%
.