「電源プラン_選択式」の有効化.bat
@echo off
setlocal
echo. & echo 電源プランを変更します。
:loopbackMain
rem 入力用文字を初期化
set GUID_str4=
echo. & echo 現在の電源プラン設定:
rem 現在の電源プランの情報を取得
powercfg /getactivescheme
echo. & echo 電源プラン一覧
rem 電源プランのリストを全て表示
powercfg /list
echo. & set /p GUID_str4="変更したい電源プランのGUIDを先頭から4文字で指定してください。 >"%GUID_str4%
rem サブルーチンとして文字列の長さをチェックする。4文字で通過、3文字以下、5文字以上は再度loopbackMainまで戻る
call :str_lenCheck "%GUID_str4%"
rem Errorlevel判定:1であれば最初に戻る
if Errorlevel 1 (goto loopbackMain)
rem サブルーチンとしてGUIDが存在するかチェックする。存在する場合電源プランを変更、存在しない場合は再度loopbackMainまで戻る
call :str_existCheck "%GUID_str4%"
rem Errorlevel判定:2であれば最初に戻る
if Errorlevel 2 (goto loopbackMain)
rem 全て問題なしであればこのバッチファイルを終了
endlocal
exit /b 0
rem サブルーチン置き場
:str_lenCheck
rem チェック用変数に代入する
set strCheck=%~1
rem 判定用変数を初期化しておく
set strlen=0
:loop_CK
if /i not "%strCheck%"=="" (
rem strCheckの文字数を1つ削る。行頭の1文字を消す動作をしている
set strCheck=%strCheck:~1%
rem 文字列のカウントアップ。/aで右辺の演算式を処理し、その結果を代入する
set /a strlen=%strlen%+1
goto :loop_CK
)
rem 4文字でなかった場合はサブルーチンを終了してMainに戻る
if /i not %strlen% equ 4 (
echo 4文字ではありません。最初に戻ります。 & echo.
rem サブルーチンは異常終了扱いなのでErrorlevel=1とする
exit /b 1
)
exit /b 0& rem サブルーチン正常終了
:str_existCheck
rem チェック用変数に代入する
set strExistCheck=%~1
rem tokens=3はpowercfg /listの3列目のみを抜き出す設定。usebackqは()が任意に使用できる
rem ()内でコマンド解釈させたい場合は``が必要、その中でパイプを使用する場合は^|で使用する
rem GUIDの先頭から4文字を、リストと照合する。一致した場合は変数を代入、電源プランを変更し、サブルーチンを終了
rem 一致しない場合、サブルーチンを終了してMainに戻る。Errorlevelを2にする
for /f "tokens=3 usebackq" %%i in (`powercfg /list ^| find "%strExistCheck%"`) do (
rem 一致する場合はそのGUIDを代入する。findは一致しない場合何も表示しないため、空文字が入力される
set changeScheme=%%i
)
rem 一致した場合と一致しなかった場合の処理。batのifの特性上falseから先に判定する
rem 一致しなかった=空文字:Mainに戻る
if /i "%changeScheme%"=="" (
echo 入力された文字列と一致するGUIDはありませんでした。最初に戻ります。 & echo.
rem サブルーチンは異常終了扱いのためErrorlevel=2とする
exit /b 2
)
rem 一致したものがある=空文字でない:変数の中身のGUIDをセットする。前のifが通らなかった場合はこっちを通る
powercfg /setactive %changeScheme%
echo 電源プランの変更に成功しました。
rem サブルーチン正常終了
exit /b 0
「電源プラン_選択式」の確認.bat
@echo off
echo.
echo ====================
echo 現在の電源プランの情報
echo ====================
echo.
powercfg /getactivescheme
pause
exit
コメント