我也找到了这个
if /i "%SAFEBOOT_OPTION%"=="MINIMAL" echo We're in Safe Mode!
我已经尝试了近10次,SAFEBOOT_OPTION变量始终为空。
答案 0 :(得分:2)
%SAFEBOOT_OPTION%
变量仅在您当前被引导至safe mode
(包含MINIMAL
)或safe mode with networking
(包含NETWORK
)时才存在。
使用其中一个安全启动选项时,会设置环境变量。环境变量是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变量为空,则系统处于正常模式。