如果在.bat或.cmd中检查是否以安全模式启动,则很简单

时间:2013-12-16 04:56:49

标签: batch-file safe-mode

操作系统:赢7 我google了很多,我发现这里有一个答案没有帮助我,因为它只输出答案(我不能在IF语句中使用它

我也找到了这个

if  /i  "%SAFEBOOT_OPTION%"=="MINIMAL" echo We're in Safe Mode! 

我已经尝试了近10次,SAFEBOOT_OPTION变量始终为空。

4 个答案:

答案 0 :(得分:2)

%SAFEBOOT_OPTION%变量仅在您当前被引导至safe mode(包含MINIMAL)或safe mode with networking(包含NETWORK)时才存在。

来自Microsoft's Docs

  

使用其中一个安全启动选项时,会设置环境变量。环境变量是SAFEBOOT_OPTION。此变量设置为Network或Minimal。

修改

在安全模式下运行时测试了以下脚本:

@echo off
if /i "%SAFEBOOT_OPTION%"=="MINIMAL" echo We're in Safe Mode!

此脚本按预期将We're in Safe Mode!打印到cmd。

答案 1 :(得分:0)

如果您有一个输出模式的命令,那么您可以在IF中使用它。

例如。命令为MyCommand,如果您以安全模式启动,则输出“您处于安全模式”,然后您可以使用以下

@echo off
MyCommand | findstr /c:"You are in safe mode" > nul
if errorlevel 1 goto NotSafe

echo Safe
REM Do whatever you want in Safe Mode
goto end

:NotSafe
echo NotSafe
REM Do whatever you want in Safe Mode
:end

如果您想检查单个字而不是空格分隔字符串,则不需要/c:中的findstr。您可以使用findstr SafeMode

答案 2 :(得分:0)

嘿大家我知道线程有点老了。但是我最近遇到了批量问题,我不希望技术人员以安全模式运行。但是我真的无法找到答案。然而,使用上面的内容,我能够仔细阅读网络的其余部分,最后想出一个可以在完成其他工作时完成的检查。因此,在这种情况下,如果它检测到安全模式,它将转到:safemode 并退出。或继续工作。

wmic COMPUTERSYSTEM GET BootupState | findstr /i "fail-safe" > nul
if %errorlevel% EQU 0 goto safemode

//东西

:safemode
    cls
    Echo.
    Echo Halting system is in SAFEMODE!!

答案 3 :(得分:0)

如果您只想检测系统是处于正常模式还是安全模式,请使用批处理程序尝试此操作,试试这个:

  

@echo off

     

如果“%SAFEBOOT_OPTION%”==“”转到正常

     

echo此计算机处于安全模式!

     

转到分机

     

:正常

     

echo此计算机正常运行!

     

转到分机

     

:分机

     

暂停

     

出口

如果SAFEBOOT_OPTION变量为空,则系统处于正常模式。