ERRORLEVEL команды FINDSTR, всегда возвращающей 0 - PullRequest
0 голосов
/ 19 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...