操作系统:Win 7 我用谷歌搜索了很多,我在这里找到了一个对我没有帮助的答案,因为它只输出答案(我不能在 IF 语句中使用它
我也发现了这个
if /i "%SAFEBOOT_OPTION%"=="MINIMAL" echo We're in Safe Mode!
我已经尝试了将近 10 次,并且 SAFEBOOT_OPTION 变量始终为空。
操作系统:Win 7 我用谷歌搜索了很多,我在这里找到了一个对我没有帮助的答案,因为它只输出答案(我不能在 IF 语句中使用它
我也发现了这个
if /i "%SAFEBOOT_OPTION%"=="MINIMAL" echo We're in Safe Mode!
我已经尝试了将近 10 次,并且 SAFEBOOT_OPTION 变量始终为空。
%SAFEBOOT_OPTION%
仅当您当前引导至safe mode
(contains MINIMAL
) 或safe mode with networking
(contains ) 时,该变量才存在NETWORK
。
来自微软的文档:
使用安全引导选项之一时会设置环境变量。环境变量是 SAFEBOOT_OPTION。此变量设置为 Network 或 Minimal。
编辑
刚刚在安全模式下运行时测试了下面的脚本:
@echo off
if /i "%SAFEBOOT_OPTION%"=="MINIMAL" echo We're in Safe Mode!
We're in Safe Mode!
该脚本按预期打印到 cmd。
如果您只是想检测系统是处于正常模式还是安全模式,请使用批处理程序试试这个,试试这个简单的:
@echo 关闭
如果 "%SAFEBOOT_OPTION%"=="" 转到正常
echo 此计算机处于安全模式!
转至分机
:普通的
echo 此计算机正在正常模式下运行!
转至分机
:分机
暂停
出口
如果 SAFEBOOT_OPTION 变量为空,则系统处于正常模式。
如果你有一个输出模式的命令,那么你可以在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:
in findstr
。你可以只使用findstr SafeMode
.
嘿大家我知道线程有点旧。但是,我最近遇到了一批问题,我不希望技术人员在安全模式下运行。但是我真的找不到答案。然而,使用上面的方法,我能够仔细阅读网络的其余部分,最后想出了一个检查,当你想要完成其他工作时也可以完成。所以在这种情况下,如果它检测到安全模式,它将转到: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!!