如何验证 SFC 是否发现错误

如何验证 SFC 是否发现错误

我想在 cmd 文件中运行 SFC 命令。在检查结束时,我想验证 SFC 是否发现错误(可以显示错误消息)。不幸的是,errorlevel 似乎无法与 sfc 配合使用 - 根据我的经验,它总是显示 0,无论它是否发现损坏的文件。

有什么想法可以解决这个问题?

更新:更准确地说,我想要的是这个。cmd 启动一些备份作业等,然后启动 sfc/scannow。如果 sfc 发现损坏的文件并修复了它们,我希望可以触发一些警报并且 cmd 停止,这样第二天早上我就能发现有什么不对劲(我知道 /scannow 应该已经修复了所有问题 - 但我想看看这个)。通常对于这种“错误处理”,我会读出 %errorlevel% 以查明命令是否产生了错误。但这在 sfc 中是不可能的,因为 - 根据我的经验 - 无论如何,它总是显示 0 的错误级别。我现在正在寻找一种解决方法。更新结束。

问候!

答案1

好吧...所以我花了几个小时在互联网上搜索任何我能找到的与 SFC 相关的东西,这是我现在在 2023 年 1 月 3 日可以提出的建议:

首先,当您检查错误级别并回显它以找出原因时,我强烈建议您这样做:

并且在 setlocal delayedexpension 中它不是 %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 命令之后立即处理错误级别。因此,您可以将 ifs 放在批处理 (.bat) 文件中的任意位置。

希望有人读到这篇文章,并希望这会有所帮助。

相关内容