ПК не будет спать / просыпаться после запуска скрипта

362
birchyboy

Я сыт по горло тем, что мой компьютер просыпался из сна, по-видимому, через случайные промежутки времени и делал все обычные вещи, отключая таймеры пробуждения, расписания задач, запрещая 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"),
который выдал ошибку пропущенного '(' after ключевого слова 'для'. Итак, я вставьте один в:
PS C: \ WINDOWS \ system32> @echo для (/ F "tokens = *" %% A в ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%% A").
Это появляется работать, хотя я до сих пор не понимаю, почему, потому что, кажется, один "(" слишком много .

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

1
Какие "несколько ошибок" он производит? Mokubai 6 лет назад 2
@Mokubai `до этого времени было неожиданным. :) DavidPostill 6 лет назад 0
Одной из ошибок было «F: термин« / F »не распознается как имя командлета, функции, файла сценария или работоспособной программы». Кроме того, в исходном сценарии этого не было (в начале. Администратор Windows Powershell сказал, что его не было (в начале сценария я не следовал этому, потому что (сделал его несбалансированным. Я его вставил, и сценарий выполнялся без ошибка - странно. birchyboy 6 лет назад 0
Другой ошибкой было то, что оператор «@» не может быть использован для ссылки на переменные в выражении. «@echo» может использоваться только в качестве аргумента команды. Для ссылки на переменные в выражении используйте «$ echo». birchyboy 6 лет назад 0

1 ответ на вопрос

0
DavidPostill

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

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

> (/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начале отсутствует.

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

В %ы должны быть заменены %%с в пакетном файле.

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

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

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

Похожие вопросы