1

Я сыт по горло тем, что мой компьютер просыпался из сна, по-видимому, через случайные промежутки времени и делал все обычные вещи, отключая таймеры пробуждения, расписания задач, запрещая LAN и другие устройства, запуская powercfg /sleepstudy и т.д.

Я нашел несколько скриптов для отключения всех таймеров пробуждения и запустил это:

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

К сожалению, я также запустил скрипт, запрещающий любому устройству активировать ПК, который, по-видимому, останавливает команду режима сна до нажатия клавиши, а затем полностью его выключает:

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

Это приводит к нескольким ошибкам.

Хотя я могу понять многое из этого, у меня нет навыков программирования, чтобы написать скрипт для его исправления :-(

Кто-нибудь может здесь помочь? (не могу восстановить системный образ в данный момент - я одолжил свой резервный диск + кэдди отсутствующему приятелю) (ОК - я Маппетт)

РЕДАКТИРОВАТЬ: ОК - я побежал
PS C:\WINDOWS\system32> @echo off

for /F "tokens = *" %% A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%% A")
который дал ошибку отсутствующего '(' после ключевого слова 'для'. Итак, я положил один в:
PS C:\WINDOWS\system32> @echo выключен для (/F "tokens = *" %% A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%% A").
Похоже, это сработало, хотя я до сих пор не понимаю, почему, потому что, кажется, один "(" слишком много.

РЕДАКТИРОВАТЬ 2 Есть ли способ отменить это? Могу ли я просто заменить -devicedisablewake на - deviceenablewake ?

1 ответ1

0

Это приводит к нескольким ошибкам.

Давайте исправим это шаг за шагом.

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

Первое ( не должно быть там.

> /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.

В начале не хватает for .

Из командной строки он будет оценивать только первый результат, поэтому вам нужно использовать командный файл.

% S необходимо заменить на %% s в пакетном файле.

Используйте следующий пакетный файл:

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

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .