O PC não irá dormir / ativar depois de executar o script

1

Eu fiquei cansado do meu PC acordar do sono aparentemente em intervalos aleatórios e fiz todas as coisas de sempre, desabilitando timers, agendamentos de tarefas, desautorizando LAN e outros dispositivos, executando powercfg / sleepstudy etc. sem sucesso.

Eu encontrei alguns scripts para desabilitar todos os temporizadores de despertar e executei isso:

Get-ScheduledTask | ? { $_.Settings.WakeToRun -eq $true -and $_.State -ne "Disabled"} | % { $_.Settings.WakeToRun = $false; Set-ScheduledTask $_ }

Infelizmente, também executei um script para impedir que qualquer dispositivo acorde o computador, o que parece interromper o comando sleep até pressionar uma tecla e, em seguida, encerrá-lo completamente:

(/F "tokens=*" %A in ('powercfg -devicequery wake_armed') do powercfg -devicedisablewake "%A"

Isso produz vários erros.

Embora eu possa entender muito, não tenho as habilidades de programação para escrever um script para corrigi-lo :-(

Alguém aqui pode ajudar? (não posso restaurar uma imagem do sistema no momento - eu emprestei meu drive de backup + caddy para um amigo que está fora) (OK - eu sou um Muppett)

EDITAR: OK - eu corri
PS C: \ WINDOWS \ system32 > @echo off

for /F "tokens=*" %%A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%%A")
which gave an error of a missing '(' after keyword 'for'. So, I put one in:
PS C:\WINDOWS\system32> @echo off for (/F "tokens=*" %%A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%%A").
This appears to have worked, although I still don't understand why, because there appears to be one '(' too many.

EDIT 2 Existe uma maneira de reverter isso? Posso apenas substituir -devicedisableawake por - deviceenablewake ?

    
por birchyboy 18.02.2018 / 20:25

1 resposta

0

Isso produz vários erros.

Vamos corrigi-lo passo a passo.

> (/F "tokens=*" %A in ('powercfg -devicequery wake_armed') do powercfg -devicedisablewake "%A"
do was unexpected at this time.

O primeiro ( não deveria estar lá.

> /F "tokens=*" %A in ('powercfg -devicequery wake_armed') do powercfg -devicedisablewake "%A"
'/F' is not recognized as an internal or external command,
operable program or batch file.

Falta for no início.

Na linha de comando, o primeiro resultado será avaliado, portanto, você precisará usar um arquivo em lotes.

O % s precisa ser substituído por %% s em um arquivo em lotes.

Use o seguinte arquivo em lotes:

@echo off
for /F "tokens=*" %%A in ('powercfg -devicequery wake_armed') do (
  powercfg -devicedisablewake "%%A"
  )

Leitura Adicional

por 18.02.2018 / 20:31