我正在尝试使用 .bat 文件调整 Windows 10 上的电源/休眠设置。我发现您可以使用 轻松导入电源方案,powercfg -import
但是问题是尝试将电源方案设置为活动方案。但是,为了使用powercfg -setactive GUID
,我需要知道 GUID 才能将其设置为活动方案。但是,GUID 会根据计算机的不同而变化。
以下是我用来提取输出powercfg /L
并将其放入变量的内容:
SETLOCAL ENABLEDELAYEDEXPANSION
SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`powercfg.exe /L`) DO (
SET var!count!=%%F
SET /a count=!count!+1
)
ECHO %var1%
ECHO %var2%
ECHO %var3%
ENDLOCAL
我无法将 GUID 放入变量中,然后将其放入 set active 命令中。我不确定如何提取特定的单词或短语。如能得到任何帮助,我将不胜感激。
答案1
我如何从输出中提取所有 GUID powercfg /l
?
使用以下批处理文件:
@echo off
Setlocal EnableDelayedExpansion
set _count=0
for /f "tokens=*" %%f in ('powercfg.exe /L ^| findstr GUID') do (
set /a _count+=1
set _output=%%f
for /f "tokens=4" %%g in ('echo !_output!') do (
set _guid[!_count!]=%%g
)
)
for /l %%f in (1, 1, %_count%) do (
echo GUID %%f = !_guid[%%f]!
)
endlocal
笔记:
- 用于
findstr
查找包含 GUID 的行 - 如果你想按名称查找特定方案,则替换
findstr GUID
为findstr %1
,然后运行test schemename
- GUID 是第四个标记,使用另一个从输出中提取它
for /f
usebackq
如果你使用,则不需要'
- 用于
for /l
循环遍历已保存的 GUID
例子:
F:\test>powercfg /l
Existing Power Schemes (* Active)
-----------------------------------
Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced) *
Power Scheme GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (High performance)
Power Scheme GUID: a1841308-3541-4fab-bc81-f71556f20b4a (Power saver)
F:\test>test
GUID 1 = 381b4222-f694-41f0-9685-ff5bb260df2e
GUID 2 = 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
GUID 3 = a1841308-3541-4fab-bc81-f71556f20b4a
F:\test>
我如何从输出中提取活动 GUID powercfg /l
?
使用以下批处理文件:
@echo off
Setlocal EnableDelayedExpansion
for /f "tokens=*" %%f in ('powercfg.exe /L ^| findstr ^*') do (
set _output=%%f
for /f "tokens=4" %%g in ('echo !_output!') do (
set _guid=%%g
)
)
echo %_guid%
endlocal
笔记:
- 有功功率方案以 结束
*
,使用findstr
查找输出中的该行 - GUID 是第四个标记,使用另一个从输出中提取它
for /f
usebackq
如果你使用,则不需要'
输出:
F:\test>powercfg /l
Existing Power Schemes (* Active)
-----------------------------------
Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced) *
Power Scheme GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (High performance)
Power Scheme GUID: a1841308-3541-4fab-bc81-f71556f20b4a (Power saver)
F:\test>test
381b4222-f694-41f0-9685-ff5bb260df2e
F:\test>
进一步阅读
答案2
这就是我最终做的事情:
@echo off
Setlocal EnableDelayedExpansion
::Import Power Config
powercfg -import C:\Windows\Temp\Never-Sleep.pow
::Get GUID of Never-Sleep
for /f "tokens=*" %%f in ('powercfg.exe /L ^| findstr ^Never-Sleep') do (
set _output=%%f
for /f "tokens=4" %%g in ('echo !_output!') do (
set _guid=%%g
)
)
::Set Power Config to Active
powercfg %_guid%
endlocal