首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过批处理(令牌)定义变量的bcdedit值?

如何通过批处理(令牌)定义变量的bcdedit值?
EN

Stack Overflow用户
提问于 2021-08-01 13:59:26
回答 2查看 159关注 0票数 0

此命令在admin CMD中显示引导管理器等待标准操作系统自动引导的秒数:

代码语言:javascript
复制
bcdedit /enum | find "timeout"

我是否想将以秒为单位的输出值批量地压入环境变量中?但它不是这样工作的:

代码语言:javascript
复制
for /f "tokens=2*" %%a in ('bcdedit /enum | find "timeout"') do set "value=%%a"
echo %value%
pause
exit

有人知道如何设置令牌命令吗?

EN

回答 2

Stack Overflow用户

发布于 2021-08-01 22:59:37

您必须在|之前使用转义字符"^“,并且脚本必须以管理员身份运行,因为bcdedit命令需要管理员权限。

代码语言:javascript
复制
@echo off

net session >nul 2>&1 || (powershell start -verb runas '"%~0"' &exit /b)

for /f "tokens=2*" %%a in ('bcdedit /enum ^| find /i "timeout"') do set "value=%%a"
                                                               
echo %value%
pause
exit
票数 1
EN

Stack Overflow用户

发布于 2021-08-01 15:29:53

首先,我要确保我只在适当的标识符{bootmgr}下输出bcdedit信息。那么我就不会只使用英语字符串timeout了。

在“以管理员身份运行”的cmd窗口中:

代码语言:javascript
复制
For /F "Delims=" %G In ('%SystemRoot%\System32\bcdedit.exe /Enum {bootmgr} 2^>NUL ^| %SystemRoot%\System32\findstr.exe /RC:"[ ][ ]*[0123456789][0123456789]*$"') Do @For %H In (%G) Do @Set "$=%H"

或者从windows batch-file‘以管理员身份运行’:

代码语言:javascript
复制
@Echo Off
SetLocal EnableExtensions
Set "$=" & For /F "Delims=" %%G In (
    '%SystemRoot%\System32\bcdedit.exe /Enum {bootmgr} 2^>NUL^
    ^|%SystemRoot%\System32\findstr.exe /RC:"[ ][ ]*[0123456789][0123456789]*$'
) Do For %%H In (%%G) Do Set "$=%%H"

在本例中,成功结果的秒数应保存为可作为%$%访问的变量的字符串值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68611136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档