Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Отловить простой системы и выход из него

Ответить
Настройки темы
CMD/BAT - Отловить простой системы и выход из него

Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2323


Конфигурация

Профиль | Отправить PM | Цитировать


Даже не знаю с какого боку зайти уже. Что требуется:
При простое = 600s (в этот момент гасится монитор) - запуск батника.
При выходе из простоя - запуск другого батника.

Пробовали реализовать это с помощью коллективного разума средствами системы - не вышло.
Т.е. если бы что-то писалось в журнал при, допустим, гашении и включении монитора, то можно было бы завесить на это событие задание в планировщике, но ничего не пишется...
Удалось реализовать только так: в св-вах заставки ставим время и флажок "Начинать с экрана входа в систему", в этом случае происходит блокировка, а на блокировку/разблокировку легко назначается нужное задание в планировщике. Но это не удобно, т.к. надо выбирать учётную запись при разблокировке.
Под простоем понимается отсутствие нажатий на клавиши, при любой загруженности процессора и HDD,
а не так, как это себе представляет планировщик :)
Условия простоя
Можно выбрать условие, позволяющее запуск задания только в том случае, если на момент активации триггера компьютер находится в состоянии простоя в течение указанного времени. При настройке этого условия также необходимо задать время ожидания (после активации триггера задания), по истечению которого компьютер будет возвращаться в состояние простоя.

Служба планировщика заданий проверяет, не находится ли компьютер в состоянии простоя, каждые 15 минут. Состоянием простоя считается состояние компьютера, при котором запущена заставка. Если заставка не запускается, считается, что компьютер находится в состоянии простоя при 0% использования процессора и 0% активности диска в течение 90% из последних 15 минут при отсутствии ввода команд с помощью клавиатуры или мыши. Если служба планировщика заданий обнаруживает, что компьютер находится в состоянии простоя, служба начинает ожидать ввода команды пользователем, чтобы отметить конец состояния простоя.

Если задание запускается только в том случае, если компьютер находится в состоянии простоя в течение 30 минут, и задание в течение 10 минут ожидает, пока компьютер перейдет в состоянии простоя, то задание запуститься через 5 минут только в том случае, если на момент активации триггера компьютер находился в состоянии простоя в течение 25 минут. Задание не будет запущено, если компьютер переходит в состояние простоя через 5 минут после активации триггера.

Любые идеи?
ОС: Windows 7, на всякий случай.

Отправлено: 03:39, 25-05-2010

 

Googler


Сообщения: 3665
Благодарности: 1562

Профиль | Отправить PM | Цитировать


Morpheus, как вариант - сделать привязку к событию вкл./выкл. хранителя экрана статья:
Running a Program from the Command Line Based on an Event, MOF-файл:

Код: Выделить весь код
#pragma namespace ("\\\\.\\Root\\subscription")

// Создание экземпляра потребителя событий командной строки
// для запуска батника "c:\\TEST\scrstart.cmd", и
// присвоение ему псевдонима $SCRSTARTCONSUMER

instance of CommandLineEventConsumer as $SCRSTARTCONSUMER
{
	Name = "ScreenSaverStartConsumer";
	CommandLineTemplate = "c:\\TEST\\scrstart.cmd %TargetInstance.Name%";
	WorkingDirectory = "c:\\TEST";
};    

// Создание экземпляра потребителя событий командной строки
// для запуска батника "c:\\TEST\scrstop.cmd",
// присвоение ему псевдонима $SCRSTOPCONSUMER

instance of CommandLineEventConsumer as $SCRSTOPCONSUMER
{
	Name = "ScreenSaverStopConsumer";
	CommandLineTemplate = "c:\\TEST\\scrstop.cmd %TargetInstance.Name%";
	WorkingDirectory = "c:\\TEST";
};    

// Создание экземпляра фильтра событий 
// для создания нового процесса *.SCR
// и присвоение ему псевдонима $SCRSTARTFILTER

instance of __EventFilter as $SCRSTARTFILTER
{
    Name = "ScreenSaverStartFilter";
    EventNamespace = "\\\\.\\root\\cimv2";  

    Query = "SELECT * FROM __InstanceCreationEvent WITHIN 5 "
            "WHERE TargetInstance ISA \"Win32_Process\" "
            "AND TargetInstance.Name LIKE \"%%.scr\"";
    QueryLanguage = "WQL";
};

// Создание экземпляра фильтра событий 
// для удаления процесса *.SCR
// и присвоение ему псевдонима $SCRSTOPFILTER

instance of __EventFilter as $SCRSTOPFILTER
{
    Name = "ScreenSaverStopFilter";
    EventNamespace = "\\\\.\\root\\cimv2";  

    Query = "SELECT * FROM __InstanceDeletionEvent WITHIN 5 "
            "WHERE TargetInstance ISA \"Win32_Process\" "
            "AND TargetInstance.Name LIKE \"%%.scr\"";
    QueryLanguage = "WQL";
};

// Создание экземпляра связи между фильтром и подписчиком
// события запуска хранителя экрана

instance of __FilterToConsumerBinding
{
     Consumer = $SCRSTARTCONSUMER;
     Filter = $SCRSTARTFILTER;
};

// Создание экземпляра связи между фильтром и подписчиком
// события остановки хранителя экрана

instance of __FilterToConsumerBinding
{
     Consumer = $SCRSTOPCONSUMER;
     Filter = $SCRSTOPFILTER;
};
пример команды компиляции: "MOFComp SCR.MOF"

P.S. Windows 7 под рукой нет, проверял на 2003

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:58, 25-05-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2323

Профиль | Отправить PM | Цитировать


amel27, это на С++? Боюсь, что не имея даже базовых знаний С++, это для меня сложновато будет.
Проще варианты возможны?

Отправлено: 12:33, 25-05-2010 | #3


(*.*)


Administrator


Сообщения: 35896
Благодарности: 6453

Профиль | Сайт | Отправить PM | Цитировать


Morpheus, подошел со стороны заставки...

How Can I Log the Start Time and the End Time of the Screensaver?
http://blogs.technet.com/b/heyscript...reensaver.aspx

Если можно отследить время запуска и остановки заставки, то можно и событие на это повесить... если знать WMI

-------
Канал Windows 10, etc | Чат @winsiders


Отправлено: 12:45, 25-05-2010 | #4


Googler


Сообщения: 3665
Благодарности: 1562

Профиль | Отправить PM | Цитировать


Цитата Morpheus:
это на С++? »
нет, это MOF - язык описания WMI-объектов, можно то же сделать и через VBS, но будет еще длинней, а тут ничего лишнего - только заменить мои батники/каталоги на свои (C:\TEST\...), вот еще похожая тема: Настройка сообщений

Цитата Vadikan:
How Can I Log the Start Time and the End Time of the Screensaver? »
а я отуда SELECT и дёрнул, но тому скрипту нужно постоянно крутиться, а тут приготовил батники , запрограммировал WMI - всё остальное сделает система

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:25, 25-05-2010 | #5


Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2323

Профиль | Отправить PM | Цитировать


Vadikan, amel27, спасибо! Пробую разобраться, вопросы будут возникать, наверняка

Отправлено: 13:35, 25-05-2010 | #6


Ветеран


Contributor


Сообщения: 26854
Благодарности: 7825

Профиль | Отправить PM | Цитировать


По-хорошему, надо бы ещё учитывать командную строку запуска *.scr, точнее, параметры его запуска То бишь, желательно бы добавить в MOF в условие ещё один предикат LIKE на параметр « /s».

Отправлено: 15:13, 25-05-2010 | #7


Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2323

Профиль | Отправить PM | Цитировать


Голова уже трещит... Помогайте, плз!
  1. Копирую текст в текстовый файл, называю его SCR.MOF.
  2. Заменяю пути.
  3. Компилирую:
    Цитата:
    C:\Windows\system32>MOFComp D:\SCR.MOF
    Microsoft (R) MOF Compiler Version 6.1.7600.16385
    Copyright (c) Microsoft Corp. 1997-2006. All rights reserved.
    Parsing MOF file: D:\SCR.MOF
    MOF file has been successfully parsed
    Storing data in the repository...
    WARNING: File D:\SCR.MOF does not contain #PRAGMA AUTORECOVER.
    If the WMI repository is rebuilt in the future, the contents of this MOF file will not be included in the new WMI repository.
    To include this MOF file when the WMI Repository is automatically reconstructed, place the #PRAGMA AUTORECOVER statement on the first line of the MOF file.
    Done!
Правильно? Что дальше?

Отправлено: 19:22, 25-05-2010 | #8


Аватара для zonderz

Ветеран


Сообщения: 727
Благодарности: 150

Профиль | Отправить PM | Цитировать


Morpheus,

вопрос: а зачем вам вообще скринсэйвер? Зачем вы свою задачу к нему подвязываете? Без него нельзя никак обойтись?

-------
MCP, MCSA, MCSE, разработчик программы CMDTools
http://forum.oszone.net/thread-170783.html


Отправлено: 20:16, 25-05-2010 | #9


Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2323

Профиль | Отправить PM | Цитировать


zonderz, а с какой целью интересуетесь?
Цитата zonderz:
вопрос: а зачем вам вообще скринсэйвер? Зачем вы свою задачу к нему подвязываете? Без него нельзя никак обойтись? »
Заставка мне вообще не нужна, задача описана в шапке.
Или имеется в виду, что будет в батниках? Сейчас задачи одни (что-то подгрузить, что-то выгрузить), какие будут завтра, пока не знаю. Но знать, как это делается полезно в любом случае.

Отправлено: 20:32, 25-05-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Отловить простой системы и выход из него

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PantherXP - создание образа системы и развертывание из него (статья) alexandr100 Автоматическая установка Windows 2000/XP/2003 174 05-01-2014 18:42
Происходит автоматический выход из системы каждую минуту 06072009 Microsoft Windows Vista 2 01-04-2011 15:48
Toshiba Qosmio X300-14X и двух-канальный ли HDMI выход у него ? XPOM Ноутбуки 2 15-02-2010 14:02
Загрузка - глюк после приветствия "выход из системы" werify Microsoft Windows 2000/XP 1 27-08-2009 14:14
Самостоятельное изменение диалогов Завершение работы и Выход из системы prokazzza Проект WinStyle 1 04-08-2009 01:19




 
Переход