检查计算机是否已批量插入交流电源

时间:2011-09-08 22:36:58

标签: windows-7 batch-file

如何在Windows 7的批处理文件中检查计算机是否已插入交流电源,如linux中的on_ac_power那样?

5 个答案:

答案 0 :(得分:8)

有一种直接的批处理文件方式:

WMIC Path Win32_Battery Get BatteryStatus

使用此和一些find / errorlevel法术,您应该可以将其变为条件。

答案 1 :(得分:6)

快速google 1 拖了

以下是该工具的令人印象深刻的 - C源代码:)

#include <windows.h>

int main() 
{
    SYSTEM_POWER_STATUS status;
    GetSystemPowerStatus( &status );
    return status.ACLineStatus;
}

希望有所帮助


<子>

1 ACLineStatus.exe

2 注意:因为我没有Windows,所以在Linux上交叉编译。它虽然在葡萄酒下工作,但输出:

$./battery.exe 
255%   ->   
Amount of time remaining is unknown

答案 2 :(得分:2)

set OnAC=false
set cmd=WMIC /NameSpace:\\root\WMI Path BatteryStatus Get PowerOnline
%cmd% | find /i "true" > nul && set OnAC=true
if %OnAC% == true *Do your thing here*

答案 3 :(得分:2)

以下是我在环境中使用的脚本,效果很好:

wmic path Win32_Battery Get BatteryStatus | find /v "BatteryStatus" | find "1" >nul 2>&1
if "%errorlevel%" == "0" (echo Do whatever you want if on BATTERY) else (echo Do whatever you want if on AC POWER)

描述:

从wmic命令中,将数字与输出隔离。

尝试找到数字&#34; 1&#34;在结果中。如果成功,则表示计算机仅使用电池运行。官方术语是&#34;(1)电池正在放电。&#34;

否则,计算机已插入交流电源。

答案 4 :(得分:0)

您确实可以通过以下方式获取电池/交流电状态:

wmic path Win32_Battery Get BatteryStatus

但是,评估状态值不只是“是1”还是“不是1”的问题!

退房:

https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-battery

例如,插入交流电后,通常应获取“ 2”

  

未知(2)

The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging.

但是,您也可以获取其他值的集合。

我非常有信心,这些都是“用电池” /“不使用交流电”:

  

其他(1)低(4)严重(5)

这些都表示“在交流电上” /“不在电池上”:

  

未知(2)充电(6)充电和高(7)充电和低(8)充电和   严重(9)

我强烈猜测这也表示“在AC上”:

  

充满电(3)

这些似乎不太确定...

  

未定义(10)部分充电(11)

我猜“未定义(10)”的意思是“交流电” /“没有电池”。 “部分充电(11)”必须表示“电池已充电”,但是对于这种(最后一次,奇怪的)枚举,“ AC是否打开”似乎很模糊。

也不是,通常当机器上没有电池时,将返回此消息:

  

“没有可用的实例。”

总而言之,出于我的目的,我定义了要放入电池的4个主要“状态”:

  • 放电
  • 充电
  • 不存在

在Linux上,可以直接从内核中查询这些类似物。

按照我的逻辑,我首先认为"No Instance(s) Available." == NOT PRESENT,然后对状态码使用以下评估:

DISCHARGING
    Other (1)
    Low (4)
    Critical (5)
CHARGING
    Unknown (2)
    Charging (6)
    Charging and High (7)
    Charging and Low (8)
    Charging and Critical (9)
    Partially Charged (11)
FULL
    Fully Charged (3)
NOT PRESENT
    Undefined (10)

此外,我还希望对“ isBatteryPresent”和“ isAcPower”进行布尔检查。我依靠状态评估,然后认为以下几点:

isBatteryPresent = state != NOT PRESENT 
isAcPower = state != DISCHARGING