2016-08-03 4 views
0

ラップトップの特別なボタンに割り当てられるバッチを書き込もうとしていますが、これはバランスのとれた電源プランと省電力プランを入れ替えることを望みます。だから、私は彼らのうちの1人が現在アクティブであり、もう1人をアクティブにするかどうかを認識したい。アクティブな電源プランを認識して変更するバッチを作成します

私は例を探していると、Windowsのバッチ上の私の理解は、この非稼働トライ限り行ってきました:

for /f "delims=" %a in ('powercfg -getactivescheme') do @set var=%a 
if "%var%"=="Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced)" (
    powercfg -s a1841308-3541-4fab-bc81-f71556f20b4a 
) else (
    if "%var%"=="Power Scheme GUID: a1841308-3541-4fab-bc81-f71556f20b4a (Power saver)" (
     powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e 
    ) 
) 

私はラインを一つずつ実行しようとしていますが、比較は思われない場合期待通りに働く私はここで何が欠けていますか?

答えて

1

あなたは2つの状態の間で切り替えるように予定がある場合はそれが動作するだけで1行

for /f "delims=" %a in ('powercfg -getactivescheme') do echo %a | find /i "balanced" > nul && powercfg -s a1841308-3541-4fab-bc81-f71556f20b4a || powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e 

で代替の回避策。

注:これはコマンドラインのコンテキストで機能します。バッチファイル コンテキストに含めることに任意の%を変更%%

& &オペレータは

成功前のコマンドを意味||オペレータは前のコマンドが

はそうは%エコー失敗を意味します| find/i "balanced"> nulキーワード平衡を検索します。真の場合は、& &の後にコマンドを実行します。そうでなければ、||の後にコマンドを実行します。

編集:マイナーチェンジが必要です。あなたに必要なものがすべてあります...

@echo off 
for /f "delims=" %%a in ('powercfg -getactivescheme') do (
    echo %%a | find /i "performance" > nul && exit/B 
    echo %%a | find /i "balanced" > nul && powercfg -s a1841308-3541-4fab-bc81-f71556f20b4a || powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e 
) 
+0

ありがとう!それは確かに動作します。それはちょっとした変更が必要です。私はパフォーマンスプランをそのまま残したい。いずれかがアクティブな場合にのみ、バランスと省電力の間を入れ替えます。パフォーマンスプランがアクティブなときは何もしません。 –

+0

**編集:**すべての_%a_を_ %% a_に変更しました – elzooilogico

関連する問題