|
Как назначить задание в "Планировщик заданий" при выключении компьютера ? | ☑ | ||
---|---|---|---|---|
0
Ткачев
01.12.11
✎
09:02
|
Нужно перед выключением компьютера сделать запуск батника, в планировщике нашел только "При запуске системы".
|
|||
1
XLife
01.12.11
✎
09:03
|
(0) кнопка "Я"?
|
|||
2
Ткачев
01.12.11
✎
09:04
|
(1)Пробовал, не нашел ответа
|
|||
3
Sinoptic
01.12.11
✎
09:05
|
Команда shutdown, не предлагать?
|
|||
4
Хоменко Валерий
01.12.11
✎
09:06
|
C:\WINDOWS\system32\shutdown.exe -s
|
|||
5
andrewks
01.12.11
✎
09:06
|
(0) у тебя заголовок и содержание расходятся в разные стороны. уточни конкретно, что именно надо
|
|||
6
Ткачев
01.12.11
✎
09:07
|
(3)Нет, мне не надо его выключать, мне надо что бы когда через "Пуск-Выключение компьютера", или по кнопке питания, отработался сначала батник или скрипт.
|
|||
7
Shurjk
01.12.11
✎
09:09
|
(6) Сделай пакетный файл и через него выключай, а так запрети выключать.
|
|||
8
Противный
01.12.11
✎
09:10
|
(6) сделай эту задачу на загрузку компа... ;)
|
|||
9
Ткачев
01.12.11
✎
09:11
|
Там есть в тригеррах "При событии", журналы, источники, код события, вот видимо тут надо копать, вот только я не знаю в какой журнал он пишет что комп надо выключить.
|
|||
10
Rie
01.12.11
✎
09:12
|
(0) Запускаешь gpedit.msc
Конфигурация компьютера - Конфигурация Windows - сценарии. |
|||
11
Ткачев
01.12.11
✎
09:12
|
(7)(8)Не вариант, надо именно при выключении компа, событие "Отключения пользователя" тоже не пойдет, при перезагрузке оно тоже срабатывает.
|
|||
12
dk
01.12.11
✎
09:15
|
можно написать свою прогу, которая будет висеть в памяти и сканировать список процессов, если определенный процесс завершился - значит комп вырубается
можно своих процессов назапускать несколько штук и как только их кол-во уменьшилось - значит комп вырубается хотя есть 2 проблемы 1. процессы могут гасить не только при завершении 2. период опроса процессов - можно не успеть отловить событие - усе закроют либо тупо ловить собственное закрытие процесса, а не опрашивать список текущих |
|||
13
Rie
01.12.11
✎
09:16
|
(12) Зачем? В (10) - штатный способ.
|
|||
14
Ткачев
01.12.11
✎
09:17
|
(13)Ищу как сценарии писать
|
|||
15
andrewks
01.12.11
✎
09:17
|
(12) жесть...
|
|||
16
dk
01.12.11
✎
09:19
|
еще можно поковыряться в nncron - говорят мощный планировщик
|
|||
17
ЧеловекДуши
01.12.11
✎
09:26
|
Зачем тебе это?
Долго играющий код все ровно не успеет отработать :) |
|||
18
ЧеловекДуши
01.12.11
✎
09:26
|
Кстати можно вообще запретить выключать ПК :)
|
|||
19
Rie
01.12.11
✎
09:26
|
(14) Посмотри здесь: http://www.script-coding.com/
|
|||
20
smaharbA
01.12.11
✎
09:27
|
gpedit если позволяет ос
|
|||
21
smaharbA
01.12.11
✎
09:27
|
+ либо повешать постоянного получателя событий
|
|||
22
dk
01.12.11
✎
09:28
|
да, со сценариями интересно, не знал
|
|||
23
Ткачев
01.12.11
✎
10:44
|
(10)Оно и при перезагрузке работает, как то можно проверить, что у нас идет выключение или перезагрузка ?
(17)Нет, время выключения увеличивается на время архивации. |
|||
24
smaharbA
01.12.11
✎
11:14
|
1074
1076 |
|||
25
Ткачев
01.12.11
✎
12:05
|
(24)Куда это поставить ?
|
|||
26
Ковычки
01.12.11
✎
14:31
|
(25) его забанили
в gpedit.msc Конфигурация компьютера - Административные шаблоны - Система (не раскрываем) - Включить свойство данных состояния системы слежения за завершением работы - Включено пишем скрипт, запускаем единожды (модифицируем или обуниверсаливаем и/или упрощаем под себя), после перезагрузки повторно запускать не надо.
|
|||
27
Ткачев
01.12.11
✎
14:43
|
У меня WIN7x64, там нет такого "Включить свойство данных состояния системы слежения за завершением работы"
|
|||
28
Ткачев
01.12.11
✎
14:45
|
(26)Журнал событий "System-User32" Код события: 1074, Тип выключения: Выключение компьютера
Как в скрипте прочитать последнею запись из журнала и при сравнении Кода и Типа запустить архивацию ? |
|||
29
Ковычки
01.12.11
✎
15:01
|
(27) в (26) не скрипт, а создание постоянного поставщика/получателя события
|
|||
30
Ковычки
01.12.11
✎
15:04
|
(29) к (28)
(27) все там есть |
|||
31
Ковычки
01.12.11
✎
15:08
|
а по поводу "фильтровать" тебе этого не надо, выполняться активскрипт будет при появлении события в журнале (можно сделать именно по самому событию), ну уж если надо - адо + обратный отсчет
|
|||
32
Ткачев
01.12.11
✎
15:12
|
(31)Я так уже делал, он не останавливается на нем, скрипт запускает и дальше комп выключает.
|
|||
33
Ковычки
01.12.11
✎
15:27
|
еще раз, в (26) не скрипт, а скрипт создает постоянного поставщика, в качестве "обработчика" можно использовать как активскриптконсумер, так и командлайнконсумер
а как заставить ждать завершения работы обработчика, или дать отмену выключения/перезагрузки описано в сапорте микрософт |
|||
34
Ткачев
02.12.11
✎
07:54
|
(26)Букав сильно много...
Я сделал так: strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colLoggedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where Logfile = 'System' and SourceName='User32'" _ & "and (EventCode = '1074' or EventCode = '1076')") For Each objEvent in colLoggedEvents If InStr(objEvent.Message, "Тип выключения: Выключение питания") > 0 Then ' Тут формируется имя файла из даты и времени, я копипастить не стал NameFile = "Arc" Set WshShell = CreateObject("Wscript.Shell") WshShell.Run("c:\Progra~1\7-Zip\7z.exe a -mx7 -r0 -x!*.cdx D:\Archiv\DB_" & NameFile & ".7z d:\1C\DB", 1, True) End If Exit For Next Помогите избавиться от For, в запросе если делаю TOP 1 или Select 1, начинает ругаться на For, как сделать выборку из запроса на одну запись ? |
|||
35
Ковычки
02.12.11
✎
08:07
|
(34) в (26) скрипт запускается единожды, после его можно хоть удалить, хоть пропить
|
|||
36
Ткачев
02.12.11
✎
08:14
|
(35)Зачем делать (26), если (34) работает, тем более в (26) не написано что делать с этим событием, т.е. как его проверить и на его основании запустить свою программу.
|
|||
37
Ткачев
02.12.11
✎
08:16
|
+(36)И вроде как оно и при перезагрузке будет срабатывать...
|
|||
38
Ткачев
02.12.11
✎
08:20
|
+(37)И судя по WITHIN 1 долбиться в журнал каждую секунду, кому нах это надо ?
Но это имхо, я не понимаю в этом, просто прочитал в учебнике что WITHIN это интервал опроса запроса, возможно я и не прав... |
|||
39
Ковычки
02.12.11
✎
08:50
|
если лениво разбираться делай как то так и запускай при старте компа
|
|||
40
Ковычки
02.12.11
✎
08:52
|
сделай не каждую секунду, сделай по событию Win32_ComputerShutdownEvent
|
|||
41
Ковычки
02.12.11
✎
08:54
|
возникнет маленькая проблема - не успеет отработать нужное, можно конечно вайтапликейшн в реестре увеличить или первой командой делать отмену выключения, а по окончании уже делать выкл/перезагрузку
|
|||
42
Ковычки
02.12.11
✎
09:02
|
да по сути тут WITHIN нафиг не нужен, это запрос к событию
|
|||
43
Ткачев
02.12.11
✎
10:25
|
(34)Это скрипт BackUp.vbs он запускается из (10), мне не надо ничего отслеживать, все уже отследилось, мне надо получить ОДНУ последнею запись в журнале, в 1с это выглядело бы так ВЫБРАТЬ 1 * ИЗ ЖурналСобытий ...
Как сделать запрос "Select Message from Win32_NTLogEvent Where Logfile = 'System' and SourceName='User32'" _ & "and (EventCode = '1074' or EventCode = '1076')" что бы он вернул одну единственную запись, а не все записи журнала? И как ее потом выбрать? |
|||
44
Ковычки
02.12.11
✎
10:26
|
я ей про лепешки, она - не поепешли
|
|||
45
Ковычки
02.12.11
✎
10:27
|
(43) не отработает он у тебя без отмены выключения или увеличения вайтапп
|
|||
46
Ковычки
02.12.11
✎
10:28
|
а выбрать один через адо
|
|||
47
Ткачев
02.12.11
✎
11:05
|
Помогите 1с Запрос, преобразовать в скрипт, данные журнала в (34)
Запрос = Новый Запрос ("ВЫБРАТЬ ПЕРВЫЕ 1 | Message |ИЗ | ЖурналСобытий |ГДЕ | Logfile = "System" | И SourceName = "User32" | И (EventCode = 1074 ИЛИ EventCode = 1076)"; Выборка = Запрос.Выполнить(); Если Выборка.Следующий() Тогда Если Найти(Выборка.Message, "Выключение компьютера") > 0 Тогда //Тут запускаю архивацию КонецЕсли; КонецЕсли; |
|||
48
Ковычки
02.12.11
✎
11:40
|
что же Вы такой "бестолковый"
хотя бы так s="" for each x in GetObject("winmgmts:").ExecQuery("select * from win32_ntlogevent where Logfile = 'System' and SourceName= 'USER32' and (EventCode = '1074' or EventCode = '1076') and TimeGenerated > '" & year(now) & right(0 & month(now),2) & right(0 & day(now),2) & "000000.000000+000'") s=s & x.eventcode & vbcrlf next msgbox s |
|||
49
Ткачев
02.12.11
✎
13:26
|
(48)Да, я такой :)
Ща попробую |
|||
50
Ткачев
03.12.11
✎
13:34
|
(48)Гомнокод, тоже самое что и в (34), фильтр по времени не рулит, лано хер с ним, если нельзя элементарно одну запись получить то буду останавливать цикл после первой записи.
|
|||
51
Torquader
03.12.11
✎
22:56
|
Если нужно что-то сделать при завершении, то нужно писать сервис, который получает уведомление о завершении системы и напоминает ей, что ещё не пора завершаться.
В противном случае процесс (и даже сценарий) не успевает отработать, если завершение сделали в режиме Force (когда выполняется немедленное завершение). |
|||
52
Ткачев
04.12.11
✎
12:35
|
(51)Нее, работает все нормально, время выключения увеличилось на время архивации, просто я хотел выбрать отбором ExecQuery только одну запись а не все по отбору, но не получилось, пришлось принудительно For завершать после чтения первой записи.
|
|||
53
Torquader
04.12.11
✎
15:31
|
(52) У меня в режиме завершения Force не получалось - процесс прерывался через некоторое время, а сценарии вообще не отрабатывали, так как система считала, что завершаться нужно быстро.
К сожалению, драйвер UPS требовал именно режим Force, поэтому пришлось обойтись без обработки. |
|||
54
Ковычки
05.12.11
✎
06:53
|
(50) ты чо такой упоротый, ветку читай внимательно.
|
|||
55
Ткачев
05.12.11
✎
07:30
|
(54)Может лучше ты почитаешь ? Надо ОДНУ запись а не весь журнал !!!
|
|||
56
Ковычки
05.12.11
✎
07:39
|
у кого нет головы, тому шляпа не нужна (с)
|
|||
57
Ковычки
05.12.11
✎
07:40
|
+ в ветке все написано, как и одну запись вытянуть и как не вытягивая ничего получить событие с кодом
|
|||
58
skunk
05.12.11
✎
07:41
|
это всю тему не смотрел ... а это что мешает посмотреть политики ... там есть опция выполнить перед выключением
|
|||
59
Ткачев
05.12.11
✎
07:41
|
Невижу, покажи где это написано ?
|
|||
60
Ткачев
05.12.11
✎
07:42
|
(58)Это сделали уже (10)
|
|||
61
Ковычки
05.12.11
✎
09:40
|
если лениво разбираться с поставщиками и асинхронностью, поставь триггер на событие
|
|||
62
Ткачев
06.12.11
✎
08:02
|
(61)Триггер я уже ставил, он и на перезагрузку работает и я не могу остановить выполнение "Завершения работы", т.е. архивация не успевает завершиться, идеальный вариант это (10), на других форумах мне сказали что без for тут не обойтись, лано... оставим все как есть, просто хотелось разобраться можно ли фильтровать и отбирать как тебе хочется.
Завершенный код (соответственно CreateArchive по своему усмотрению), всем спасибо!": For Each ObjEvent In GetObject("winmgmts:").ExecQuery("Select Message From win32_ntlogevent "_ & "where Logfile = 'System' and SourceName= 'USER32' and (EventCode = '1074' or EventCode = '1076') "_ & "and TimeGenerated > '" & year(now) & right(0 & month(now),2) & right(0 & day(now),2) & "000000.000000+000'") Exit For Next If InStr(ObjEvent.Message, "Тип выключения: Выключение питания") > 0 Then mm = Right(0 & Month(Date()) , 2) dd = Right(0 & Day(Date()) , 2) hh = Right(0 & Hour(Time()) , 2) mn = Right(0 & Minute(Time()), 2) ss = Right(0 & Second(Time()), 2) NameFile = Year(Date()) & mm & dd & hh & mn & ss Set WshShell = CreateObject("Wscript.Shell") CreateArchive = WshShell.Run("c:\Progra~1\7-Zip\7z.exe a -mx7 -r0 -x!*.cdx D:\Archive\DB_" & NameFile & ".7z d:\1C\DB", 1, True) End If |
|||
63
Ковычки
06.12.11
✎
08:23
|
остановить завершение shutdown /a но добавив времени сервисам и особенно рпс
а получить последний реально |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |