从 powercfg /list 中获取 GUID

问题描述 投票:0回答:2

正在开发 Windows 的 Caffinate 替代品,想知道是否有一种方法可以只获取当前使用的电源计划的 GUID,而不需要其余的输出,这是我的意思的一个示例。

使用时我得到了什么......

powercfg /list

Existing Power Schemes (* Active)
-----------------------------------
Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e  (Balanced) *

我想要什么...

381b4222-f694-41f0-9685-ff5bb260df2e

这样我就可以引用它并在咖啡因完成后重新加载它。

windows batch-file cmd guid powercfg
2个回答
0
投票
@ECHO OFF
SETLOCAL
FOR /f "tokens=1-4" %%g IN ('powercfg /list^|find "*" ') DO IF "%%g%%h%%i"=="PowerSchemeGUID:" SET "guid=%%j"
ECHO guid=%guid%
GOTO :EOF

如果您想要列表中的其他指南,只需用

Balanced
High performance
Power saver
(或您可能需要的任何其他内容)替换
*


0
投票

获取当前电源方案 GUID

要获取当前电源方案,请使用

-getactivescheme
而不是
-list
(Powercfg Docs):

powercfg -getactivescheme
# Power Scheme GUID: 49371465-2b86-4782-9e84-816d3f61e3c8  (Ultimate Performance)

在Powershell中,我们可以使用Regex来提取GUID:

[regex]::Match((powercfg -getactivescheme), 'GUID: ([\w-]+)').Groups[1].Value
# 49371465-2b86-4782-9e84-816d3f61e3c8

列出所有电源方案 GUID

[regex]::Matches((powercfg -list), 'GUID: ([\w-]+)') | %{$_.Groups[1].Value}

[正则表达式]::匹配解释

我们使用

[regex]
访问 .NET 正则表达式方法
Match
Matches
。运行
[regex] | Get-Member -Static
以获得其他方法的列表。 Match 和 Matches 的基本语法是:

[regex]::Match($stringToMatch, $regexPattern)

Match
返回第一个匹配项,
Matches
返回匹配项的集合。

要列出所有电源方案 GUID,我们在电源方案列表上使用

[regex]::Matches
并将结果通过管道传输到 ForEach。
%{}
是 ForEach 的简写。
$_
表示循环中的当前项。在这种情况下,我们的
MatchInfo
对象。

© www.soinside.com 2019 - 2024. All rights reserved.