Как проверить, если SFC обнаружил ошибки
Я хочу запустить команду SFC в файле cmd. В конце проверки я хотел бы проверить, обнаружил ли SFC ошибки (что может отображаться сообщение об ошибке) или нет. К сожалению, errorlevel, похоже, не работает с sfc - по моему опыту он всегда показывает 0, независимо от того, нашел он поврежденные файлы или нет.
Некоторые идеи, как это решить?
Обновление: чтобы быть более точным, что я хочу это. Cmd запускает несколько резервных заданий и т. Д., Затем запускает sfc / scannow. В случае, если sfc обнаружил поврежденные файлы и восстановил их, я хочу, чтобы какое-то оповещение могло быть запущено, и cmd приходит в остановку, чтобы на следующее утро я мог видеть, что что-то было подозрительно (я знаю, что / scannow уже должен был все исправить - но я хочу взглянуть на это). Обычно для такого рода "Обработки ошибок" я считывал% errorlevel%, чтобы выяснить, вызвала ли команда ошибку. Но это невозможно с sfc, так как - по моему опыту - он всегда показывает 0 для уровня ошибки, несмотря ни на что. Я сейчас ищу обходной путь. Конец обновления.
Привет!
1 ответ
Хорошо... Итак, я потратил часы на поиск в Интернете всего, что мог найти о материалах, связанных с SFC, и вот что я могу предложить сейчас, в 2023 году, 3 января:
Сначала, когда вы проверяете уровень ошибок и когда вы повторяете его, чтобы узнать, я настоятельно рекомендую сделать это:
а внутри setlocal DelayExpension это не %errorlevel%, а !errorlevel!
обработка уровня ошибок
@REM SFC /scannow command
SFC /scannow & errLevel = %errorlevel%
@REM You can add some code here as well as much as you want
if %errLevel% EQU 1 @echo case of standard error of SFC operation
if %errLevel% EQU -1073741510 @echo SFC was forced to quit by the user with ctrl+d
if %errLevel% EQU 0 @echo case of success operation
Преимущество этого в том, что вам не нужно обрабатывать уровень ошибок сразу после команды sfc. Таким образом, вы можете поместить if в любое место вашего пакетного файла (.bat).
Надеюсь, кто-нибудь это прочитает, и я надеюсь, что это будет полезно.