2011-08-22 5 views
1

Я пытаюсь найти способ проверить состояние батареи в пакетном файле, то есть прекратить выполнение сценария, если ноутбук работает от батареи. Я пытаюсь выполнить команду poercfg без каких-либо результатов.Проверьте состояние батареи в пакетном файле?

Все, что мне нужно что-то подобное, но в пакетном файле:

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

Что я могу использовать?

+0

Что OS вы? Вы говорите «командный файл» в заголовке, который является вещью Windows, а затем имеет пример в bash, который обычно является линией Linux. Вам нужно предоставить еще несколько подсказок, чтобы получить точный ответ! – Caleb

+0

Мне нужно это на машине Windows – kerio

+0

@kerio: Тогда вопрос * не * о [тег: bash]. Я удалю этот тег; добавьте его обратно, если я ошибаюсь. –

ответ

0

Нечто вроде Rob Vanderwoude's script может работать. Как и ожидалось, это больше работает. Похоже, что он использует некоторую информацию WMI.

+0

Поскольку он помечен как «bash» и дает представление в сценарии bash, я сомневаюсь, что использование WMI возможно ... – carlpett

+0

@carlpett: OP также назвал его «пакетным файлом», поэтому путаница понятна. Cygwin? – Caleb

+1

@carlpeet прочитал последнюю строку: '' 'Все, что мне нужно, это что-то вроде этого, но в командном файле:' '' Он дает пример * nix того, что он хочет делать с пакетным файлом. –

2

Если вы на 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 
+0

На моих ноутбуках путь/sys/class/power_supply /. Обычно будут две вложенные папки (но может отличаться именование), но файл с именем 'type' будет указывать либо« Сеть », либо« Батарея ». Файл 'online' в каталоге типа« Сеть »равен 1, если вы подключены. Однако на моем рабочем столе, на котором есть как сетевое оборудование, так и батарея ИБП (на которой мой рабочий стол XFCE показывает статус), не имеют ни папки, поэтому должен быть некоторый третий метод. – unhammer

0

вы можете с помощью $? чтобы получить последний статус возврата grep. Я думаю, что это сработает для вас.

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

Вот он идет:

@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 

Я украл WMIC запрос из сценария Роба ссылается Caley

+0

Эта информация присутствует в событиях, поэтому ее можно использовать в планировщике задач. I.e пошлите мне электронное письмо при зарядке аккумулятора. – Arthor

+0

@Arthor Нет, он не зарегистрирован в журнале событий. Но если вы ищете SO, вы найдете немало обходных решений/powershell/vbs code – wmz

+0

Я благодарю вас. В конце концов, я сделал партию. – Arthor

Смежные вопросы