4

操作系统:Win 7 我用谷歌搜索了很多,我在这里找到了一个对我没有帮助的答案,因为它只输出答案(我不能在 IF 语句中使用它

我也发现了这个

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

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

4

4 回答 4

3

%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。

于 2013-12-16T05:13:20.610 回答
0

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

@echo 关闭

如果 "%SAFEBOOT_OPTION%"=="" 转到正常

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

转至分机

:普通的

echo 此计算机正在正常模式下运行!

转至分机

:分机

暂停

出口

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

于 2015-04-20T00:28:54.707 回答
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:in findstr。你可以只使用findstr SafeMode.

于 2013-12-16T05:12:22.890 回答
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!!
于 2015-01-23T02:39:46.347 回答