Batch file 检查批处理文件中的电池状态?

Batch file 检查批处理文件中的电池状态?,batch-file,power-management,Batch File,Power Management,我试图找到一种方法来检查批处理文件中的电池状态,即如果笔记本电脑使用电池运行,则停止脚本的执行。我正在尝试使用poercfg命令,但没有结果 我所需要的只是类似的东西,但在批处理文件中: #!/bin/bash if [ acpi -a | grep "off-line" eq 0 ]; then echo "plug your laptop and run it again" exit 1 fi 我能用什么?类似的东西可能有用。正如所料,这是更多的工作。它似乎使用了一些WMI信

我试图找到一种方法来检查批处理文件中的电池状态,即如果笔记本电脑使用电池运行,则停止脚本的执行。我正在尝试使用
poercfg
命令,但没有结果

我所需要的只是类似的东西,但在批处理文件中:

#!/bin/bash
if [ acpi -a | grep "off-line" eq 0 ]; 
   then echo "plug your laptop and run it again"
   exit 1
fi

我能用什么?

类似的东西可能有用。正如所料,这是更多的工作。它似乎使用了一些WMI信息。

如果您在Linux上,您可以从
/proc
获取此信息:

#!/bin/bash
if grep -q discharging /proc/acpi/battery/BAT0/state; then
   echo "plug your laptop and run it again"
   exit 1
fi

您可以使用$?获取grep的最后一次返回状态。 我想这对你有用

#!/bin/bash
acpi -a | grep "off-line"
if [ $? -eq 0 ]; 
   then echo "plug your laptop and run it again"
   exit 1
fi
下面是:

@echo off
wmic Path Win32_Battery Get BatteryStatus | find "2" > nul
if %errorlevel% neq 0 (
  echo Not running on AC, exiting
  exit /B
)
echo running on AC, continuing execution

我从Rob的脚本中偷取了wmic查询,Caley引用了该脚本

,因为他将其标记为“bash”,并在bash脚本中给出了一个想法,我怀疑使用WMI是否可行…@carlpett:OP还将其命名为“批处理文件”,所以混淆是可以理解的。Cygwin?@carlpeet阅读了最后一行:
我需要的是类似的东西,但在批处理文件中:
他给出了一个*nix的例子,说明他想用批处理文件做些什么。是的,Caley,这正是我要找的,我可以在linux上编写它,但是我正在Windows上寻找解决方案。嗯,Rob Vandewolde的脚本不能解决我的问题。你在用什么操作系统?你在标题中说“批处理文件”,这是一个windows的东西,然后在bash中有一个例子,通常是Linux的东西。你需要提供更多的线索才能得到准确的答案!我需要把这个放在窗户上machine@kerio当前位置那么问题不是关于。我会去掉那个标签;如果我弄错了,请重新添加。在我的笔记本电脑上,路径是/sys/class/power\u supply/。通常会有两个子文件夹(但命名可能不同),但名为
type
的文件会显示“Mains”或“Battery”。如果您已插入电源,则电源类型目录中的文件
online
为1。但是,我的桌面既有电源,又有UPS“电池”(我的XFCE桌面为其显示状态),这两个文件夹都没有,因此必须有第三种方法。这些信息是否存在于事件中,以便可以在任务计划程序中使用。例如,使用电池供电时向我发送电子邮件。@Arth或No事件日志中未记录该邮件。但是,如果您进行搜索,那么您将找到相当多的变通方法/powershell/vbs代码