バッチ ファイル内で次のコマンドを実行しています。
wmic path system32 estimatedchargeremaining
私が達成したいのは、この結果を使用して、結果に応じて別のコマンドを実行することです。たとえば、出力が次の場合:
estimatedchargeremaining
75
エラーレベル 0 ではなく 75 を使用したい
そのため、その後に実行するコマンドは次のようなものになります。
if estimatedchargeremaining LEQ 15
*NEW COMMAND*
if estimatedchargeremining GTR 99
*NEW COMMAND*
しかし、戻り値がこれらのいずれにも適合しないため、コマンドは実行されません。
これが十分に明確であることを願っています。残念ながら、私は現在別のコンピューターを使用しているため、既に持っているものをお見せすることはできません. ただし、必要に応じて後でこれを利用できるようにすることができます。
チアーズガイズ
フォーマットされたコードは次のとおりです。
@echo ON
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=2 delims==" %%a in (
'wmic path win32_battery estimatedchargeremaining /value^|find "="' ) do (
if %%a LEQ 15 echo DEVCON ENABLE "@ACPI\ACPI0003\2&DABA3FF&2" GOTO END
if %%a GTR 99 echo DEVCON DISABLE "@ACPI\ACPI0003\2&DABA3FF&2" GOTO END
)
:end
PAUSE
これは、次のマットの提案を使用しようとしているコードです。
@echo ON
cd c:/windows/system32
setlocal enableextensions
for /f "tokens=2 delims==" %%a in (
'wmic path win32_battery get estimatedchargeremaining /value^|find "="'
) do (
if %%a LEQ 15 (GOTO :ENABLE) else goto :DISABLE0
:DISABLE0
if %%a GEQ 99 (GOTO :DISABLE)
)
:ENABLE
DEVCON ENABLE "@ACPI\ACPI0003\2&DABA3FF&2"
:DISABLE
DEVCON DISABLE "@ACPI\ACPI0003\2&DABA3FF&2"
:END
PAUSE
バッチファイルを実行すると、これが起こっています:
C:\Users\Aaron\Desktop>cd c:/windows/system32
c:\Windows\System32>setlocal enableextensions
c:\Windows\System32>for /F "tokens=2 delims==" %a in ('wmic path win32_battery g et estimatedchargeremaining /value|find "="') do ( if %a LEQ 15 (GOTO :ENABLE ) else goto :DISABLE0 if %a GEQ 99 (GOTO :DISABLE ) )
c:\Windows\System32>( LEQ 15 (GOTO :ENABLE ) else goto :DISABLE0 GEQ 99 (GOTO :DISABLE ) )
c:\Windows\System32>DEVCON ENABLE "@ACPI\ACPI0003\2&DABA3FF&2" ACPI\ACPI0003\2&DABA3FF&2 : Enabled 1 device(s) enabled.
c:\Windows\System32>DEVCON DISABLE "@ACPI\ACPI0003\2&DABA3FF&2" ACPI\ACPI0003\2&DABA3FF&2 : Disabled 1 device(s) disabled.
c:\Windows\System32>PAUSE Press any key to continue . . .
「GOTO's」が無視され、両方のコマンドが実行されているため、互いにキャンセルしている理由がわかりませんか?