在批处理文件中,我正在运行命令:
wmic path system32 estimatedchargeremaining
我想要实现的是使用它的结果来执行另一个依赖于结果的命令。例如,如果输出显示为:
estimatedchargeremaining
75
我想使用 75...不是错误级别 0
所以之后在那里运行的命令将类似于:
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
这是我现在尝试使用以下 matts 建议的代码:
@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”被忽略并且两个命令都被执行从而相互抵消了?