2016-09-26 132 views
0

我写了一个使用powercfg导入定制电源计划的批处理文件。它可以工作,但在运行脚本之后,我必须进入Windows Power Plan并手动选择要激活的计划。如何使用Powercfg设置活动计划而不使用GUID?

我宁愿如果选择可以在批处理文件中完成但由于GUID随每次导入而改变,因此我无法在批处理文件中使用GUID。

用于激活新导入的电源计划的最佳powercfg语法是什么?我的最终目标是让最终用户能够运行批处理文件,而无需进入命令提示符。

我喜欢findstr方法。我必须做错事,因为权力计划不会改变我输入的计划。我在这里做错了什么?非常感谢!

@回响

POWERCFG -import “%USERPROFILE%\桌面\则Powercfg CMIT Defalut \ CMIT Win10电源Plan.pow” 2>错误的.txt

如果%ERRORLEVEL%NEQ 0( 回声失败 类型错误 .TXT )否则( 回声。 ) 暂停

FOR/F“来kens = 4“%f in('powercfg -list^| FINDSTR/C: “CMIT Win10电源计划”')不设置GUID =%F

回答

0

此命令捕获当前活动的电源计划

for /f "tokens=4 skip=1" %%f in ('powercfg -list ^| findstr \*') do set GUID=%%f 
echo %GUID% 

描述:

POWERCFG的输出给出了这样的:

C:\temp\Batches>powercfg -list 

Existing Power Schemes (* Active) 
----------------------------------- 
Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (HP Recommended) * 
Power Scheme GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (High performance) 
Power Scheme GUID: a1841308-3541-4fab-bc81-f71556f20b4a (Power saver) 

查找带星号的行。

C:\Users\Paul>powercfg -list | findstr \* 
Existing Power Schemes (* Active) 
Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (HP Recommended) * 

循环输出,跳过第1行,抓住第4个标记,将其保存到guid环境变量。

for /f "tokens=4 skip=1" %%f in ('powercfg -list ^| findstr \*') do set GUID=%%f 

另外,您可以按名称通过改变参数搜索到findstr

for /f "tokens=4" %%f in ('powercfg -list ^| findstr /C:"Power saver"') do set GUID=%%f 

这已提取的GUID。要激活该计划,请执行以下操作:

powercfg /setactive %GUID% 
+0

更改设置当你需要这样发布的数据,请做它作为一个编辑您的问题最近不解。这样你可以使用正确的格式。 – FloatingKiwi

+0

我已重新编辑原始问题。感谢您的帮助! – AsherV

+0

我修正了答案。按名称搜索示例有一个语法错误'%f'而不是'%% f'。另外我没有投入激活计划的命令。 – FloatingKiwi

0

您可以使事情更轻松。 首先安装不同的模式,然后添加新模式并使其处于活动状态。这里这么一个示例 -

powercfg -restoredefaultschemes 
POWERCFG -SETACTIVE 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c 
copy "powersheme\\weg.pow" "C:\\weg.pow" 
POWERCFG -DELETE 381b4222-f694-41f0-9685-ff5bb260df2e 
pause 
POWERCFG -IMPORT C:\weg.pow 381b4222-f694-41f0-9685-ff5bb260df2e 
del C:\weg.pow 
POWERCFG -SETACTIVE 381b4222-f694-41f0-9685-ff5bb260df2e 
msg * power sheme instal 
pause 

他本人被同时对200件)))

相关问题