
Preciso criar uma tarefa no TS com base na alteração do nível da bateria. Digamos que minha bateria caia de67%para66%. Como posso executar uma tarefa com base neste evento. O Windows registra isso? Não consegui encontrar essa informação em lugar nenhum.
Responder1
Preciso criar uma tarefa no Agendador de Tarefas com base na alteração do nível da bateria
O Windows não registra esse tipo de detalhe como eventos. No entanto, você pode usar algo como o arquivo em lote abaixo e criar um evento personalizado.
Bateria.cmd
Este arquivo em lote monitora a carga percentual atual da bateria e cria um evento definido pelo usuário se a carga cair abaixo de um valor limite definido pelo usuário.
@echo off
setlocal EnableDelayedExpansion
rem set threshold value
set _threshold=82
:start
rem get the battery charge
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1" %%i in (`wmic Path Win32_Battery Get EstimatedChargeRemaining ^| findstr /r /v "^$"`) do (
set _charge=%%i
echo !_charge!
if !_charge! lss !_threshold! (
echo threshold reached
rem create a custom event in the application event log
rem requires administrator privileges
eventcreate /l APPLICATION /t WARNING /ID 999 /D "Battery charge has dropped"
goto :done
) else (
rem wait for 10 minutes then try again
timeout /t 600 /nobreak
goto :start
)
)
:done
endlocal
Notas:
- O
Eventcreate
comando funciona no Windows XP até e incluindo o Windows 10, requer privilégios de administrador para funcionar - Defina
_threshold
conforme necessário - Caso a bateria fique abaixo deste valor
999
será gerado um evento com ID no log de eventos do APLICATIVO com a descriçãoBattery charge has dropped
- Modifique o
eventcreate
comando conforme necessário para sua situação. - Modifique o
timeout
atraso conforme necessário para sua situação.
Exemplo de saída:
Minha bateria atualmente está com 81% de carga. Eu configurei o limite para 82
. Aqui está o que acontece quando eu executo Battery.cmd
:
> battery
81
threshold reached
SUCCESS: An event of type 'WARNING' was created in the 'APPLICATION' log with 'EventCreate' as the source.
E aqui está a nova entrada no Log de Eventos:
sintaxe de criação de evento
EVENTCREATE [/S system [/U username [/P [password]]]] /ID eventid
[/L logname] [/SO srcname] /T type /D description
Description:
This command line tool enables an administrator to create
a custom event ID and message in a specified event log.
Parameter List:
/S system Specifies the remote system to connect to.
/U [domain\]user Specifies the user context under which
the command should execute.
/P [password] Specifies the password for the given
user context. Prompts for input if omitted.
/L logname Specifies the event log to create
an event in.
/T type Specifies the type of event to create.
Valid types: SUCCESS, ERROR, WARNING, INFORMATION.
/SO source Specifies the source to use for the
event (if not specified, source will default
to 'eventcreate'). A valid source can be any
string and should represent the application
or component that is generating the event.
/ID id Specifies the event ID for the event. A
valid custom message ID is in the range
of 1 - 1000.
/D description Specifies the description text for the new event.
/? Displays this help message.
Examples:
EVENTCREATE /T ERROR /ID 1000
/L APPLICATION /D "My custom error event for the application log"
EVENTCREATE /T ERROR /ID 999 /L APPLICATION
/SO WinWord /D "Winword event 999 happened due to low diskspace"
EVENTCREATE /S system /T ERROR /ID 100
/L APPLICATION /D "Custom job failed to install"
EVENTCREATE /S system /U user /P password /ID 1 /T ERROR
/L APPLICATION /D "User access failed due to invalid user credentials"
Leitura adicional
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- criação de evento- Crie um evento personalizado no Visualizador de eventos do Windows.
- tarefas- Criar/editar um trabalho/tarefa agendada. O trabalho pode ser criado no computador local ou remoto.
- wmic- Comando de instrumentação de gerenciamento do Windows.
Responder2
Existe um Microsoft-Windows-Battery
provedor ETW com BatteryPercentRemaining
evento com ID 13. Você pode codificar um projeto que usaEvento de rastreamentopara criar umouvinte em tempo realpara este Microsoft-Windows-Battery
provedor. O evento possui as entradas RemainingPercentage
para mostrar o status e PercentageChange
ver a alteração:
Ao ver este evento e ver a -1
alteração para PercentageChange
, execute o programa desejado.
Responder3
OK, o script fornecido por DavidPostill não funciona. É um pequeno script legal, mas o código é errático ou desatualizado.
Aqui está o fixo:
@echo off
setlocal EnableDelayedExpansion
rem set threshold value
set _threshold=30
:start
rem get the battery charge
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1" %%i in (`wmic Path Win32_Battery Get EstimatedChargeRemaining ^| findstr /r /v "^$"`) do (
set _charge=%%i
echo !_charge!
if !_charge! lss !_threshold! (
echo threshold reached
rem create a custom event in the application event log
rem requires administrator privileges
eventcreate /l APPLICATION /t WARNING /ID 999 /D "Battery charge has dropped below the threshold."
goto :done
) else (
rem wait for 1 minute then try again
timeout /t 60 /nobreak
goto :start
)
)
:done
endlocal
Sugeri esta edição na resposta de DavidPostill, mas não sei por que não foi aprovada...
Responder4
Existe uma maneira muito mais fácil de verificar o nível da bateria. Na área de navegação basta passar o mouse sobre o ícone da bateria e ele dará uma porcentagem.