ПК не будет спать / просыпаться после запуска скрипта
Я сыт по горло тем, что мой компьютер просыпался из сна, по-видимому, через произвольные промежутки времени и делал все обычные вещи, отключая таймеры пробуждения, расписания задач, запрещая 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"
Это приводит к нескольким ошибкам.
Хотя я могу понять многое из этого, у меня нет навыков программирования, чтобы написать скрипт для его исправления:-(
Кто-нибудь может здесь помочь? (не могу восстановить системный образ в данный момент - я одолжил свой резервный диск +caddy приятелю, которого нет)(ОК - я Маппетт)
РЕДАКТИРОВАТЬ: ОК - я побежал
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 ответ
Это приводит к нескольким ошибкам.
Давайте исправим это шаг за шагом.
> (/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"
)
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD
- Категоризованный список команд Windows CMD
- for / f - Циклическая команда против результатов другой команды.