0

バッチ ファイル内で次のコマンドを実行しています。

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」が無視され、両方のコマンドが実行されているため、互いにキャンセルしている理由がわかりませんか?

4

2 に答える 2

0

これを試して。ここにはテスト用のラップトップはありませんが、近いはずです。

@echo off
setlocal

for /f "tokens=2 delims==" %%a in (
  'wmic path win32_battery get estimatedchargeremaining /value^|find "="'
) do (
  if %%a LEQ 15 echo do something
  if %%a GTR 99 echo do something else
)
于 2014-04-10T12:26:05.483 に答える