今回は、Batで現在アクティブな電源プランのGUIDを取得する方法をご紹介します。
電源プラン内での設定変更をする際、GUIDが必要な場面があります。そういった時にユーザに選択させず自動で取得できる方法を記します。
現在アクティブな電源プランのGUIDを取得する方法
出力のみ
以下のコードを記述すればGUIDのみ出力されます。
for /f "usebackq tokens=3" %%i in (`"powercfg /getactivescheme"`) do echo %%i
getactiveschemeは、現在設定している電源プランの情報ですが、GUID以外にも電源プラン表示名なども取得されてしまうので、GUIDのところのみ抜き出すように記述しています。
GUIDから電源設定を行う
GUIDが必要な設定項目の一部を記述しています。
以下の設定により、現在アクティブな電源プランのみ反映を行えます。
@echo off rem 現在アクティブなpowerconfigのGUIDを取得する。 set GUID_NUMBER= for /f "usebackq tokens=3" %%i in (`"powercfg /getactivescheme"`) do set GUID_NUMBER=%%i rem カバーを閉じたときの動作時に何もしない powercfg -setacvalueindex %GUID_NUMBER% sub_buttons lidaction 0 rem 電源ボタンクリック時に何もしない powercfg -setacvalueindex %GUID_NUMBER% sub_buttons pbuttonaction 0 rem スリープボタンの動作時に何もしない powercfg -setacvalueindex %GUID_NUMBER% sub_buttons sbuttonaction 0
おわりに
今回はbatのguidを取得する方法を記しましたが、batを使う機会が薄くなってきているのではないでしょうか。psもありますし、RPAのような自動化もあります。ゼロタッチキッティングの時代にも突入しています。今後も使わなくなっていくのではないかなとも。ただし、機微な自動化などオンプレ環境のスケジューラーに仕込んだり、何気なく使うと思いますので忘れないようにしていきたいです。
個人的にプログラムの歴史の中で後期にあたる言語と比較してしまい、batは苦手意識が強いです。内部的には同じことかもしれませんが、空白含んだ文字列のX番目を取得するという場合、文字列をスプリットして、配列にし、X番目の値を取得すればよいと直感的に考えてしまいますが、batではforで回す必要があります。こういった違いから苦手意識があります。
この違いから、またすぐに忘れてしまいまそうです。
そのため備忘録のためにも記しました。
コメント