Выполнить скрипт перед выключением ПК

Обсуждение программ nnCron и nnCron LITE

Выполнить скрипт перед выключением ПК

Postby vasiliy » Mon, 30 Mar 2015, 16:08

Code: Select all
#( shutdown
WatchQueryShutdown
Action:
INTERCEPT-SHUTDOWN
PAUSE: 10000
StartIn: "C:\"
SWHide   NormalPriority
START-APP: C:\logger.bat shutdown
CONTINUE-SHUTDOWN
)#

Code: Select all
15:49:56 328 TASK: shutdown
15:50:06 328 Start: C:\logger.bat shutdown
15:50:06 328 Start result: 0
15:50:16 1772 Service stopped.


WindowsXP SP3. Скрипт просто записывает данные в файл, который находится на удаленном компьютере. Ему много времени не нужно на выполнение, но на всякий случай выставил паузу по-больше. Скрипт все равно не срабатывает. Что я делаю не так и как можно добиться выполнения скрипта при выключении ПК?
vasiliy
 
Posts: 7
Joined: Mon, 30 Mar 2015, 14:47

Re: Выполнить скрипт перед выключением ПК

Postby VoidVolker » Mon, 30 Mar 2015, 20:40

Пауза - это именно пауза, т.е. следующий кусок кода будет запущен через указанный промежуток времени. В данном случае она не имеет смысла.
Ннкрон установлен сервисом? Если да, то возможно, следует использовать опцию AsLoggedUser.
vasiliy wrote:Что я делаю не так и как можно добиться выполнения скрипта при выключении ПК?

А то, что продолжение выключения начинается сразу же после запуска скрипта. Поэтому следует подождать окончания работы скрипта.
Code: Select all
#( Задача_203930032015
WatchQueryShutdown
SingleInstance
AsLoggedUser
Action:
INTERCEPT-SHUTDOWN
StartIn: "C:\"
SWHide   NormalPriority
START-APPW: C:\logger.bat shutdown
CONTINUE-SHUTDOWN
)#

И еще, следует назвать задачу несколько иначе, т.к. слово shutdown уже есть в словаре ннкрона.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Выполнить скрипт перед выключением ПК

Postby vasiliy » Tue, 31 Mar 2015, 15:05

Попробовал, не сработало. На локальный компьютер сохраняет, а в сеть нет. Если ставлю паузу(PAUSE: 10000) после выполнения скрипта, то и на локальном не срабатывает.
Забавно то, что один раз он таки сработал для сети, примерно из 17-20 попыток.
Я еще LoadProfile после AsLoggedUser добавил, чтобы он имя пользователя определял, но и без этого он не работал.
vasiliy
 
Posts: 7
Joined: Mon, 30 Mar 2015, 14:47

Re: Выполнить скрипт перед выключением ПК

Postby elos » Tue, 31 Mar 2015, 15:12

Содержимое logger.bat можно показать?
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Выполнить скрипт перед выключением ПК

Postby vasiliy » Tue, 31 Mar 2015, 15:26

Code: Select all
@echo off

set mPATH=\\10.0.1.201\Install\updates\logger
rem set mPATH=C:\
set ACTION=%1
rem set ACTION=logon

GOTO CASE_%ACTION%
:CASE_logon
    set ACTION=logon
    GOTO END_SWITCH
:CASE_logoff
    set ACTION=logoff
    GOTO END_SWITCH
:CASE_scron
    set ACTION=screen saver enabled,
    GOTO END_SWITCH
:CASE_scroff
    set ACTION=screen saver disabled,
    GOTO END_SWITCH
:CASE_shutdown
    set ACTION=shutdown
    GOTO END_SWITCH
:END_SWITCH


FOR /F "usebackq" %%i IN (`hostname`) DO SET HOSTNAME=%%i

for /f "tokens=1-4 delims=. " %%1 in ('date /t') do (
set D=%%1
set M=%%2
set Y=%%3
)
set mDATE=%Y%-%M%-%D%

for /f "tokens=1-4 delims=, " %%1 in ('echo %time%') do set mTIME=%%1

set TimeStamp=%mDATE% %mTIME%

echo %TimeStamp%;%HOSTNAME%;255.255.255.255;%COMPUTERNAME%;%ACTION% user: %USERNAME% >> %mPATH%\%HOSTNAME%

IF NOT EXIST "%mPATH%\%HOSTNAME%.IP" (
('
ipconfig
')>%mPATH%\%HOSTNAME%.IP.dirty

exit /b
)
vasiliy
 
Posts: 7
Joined: Mon, 30 Mar 2015, 14:47

Re: Выполнить скрипт перед выключением ПК

Postby elos » Wed, 01 Apr 2015, 16:22

Я не очень силён в таких батниках (вот не лезет в мозги ихнее описание). Кто б мне разъяснил простыми словами что он делает? Типа пишет куда-то там во что-то, что комп такой-то с таким-то пользователем во столько то выключился...

Пока предположу следующее. В момент WatchQueryShutdown начался процесс выключения компьютера... Что там и где и с чем в какой момент происходит (зависит скорее всего от быстродействия проца, количества процессов и сервисов)- только Microsoft известно. Но сетка скорее всего уже обрублена... После прерывания выключения попробуй пингануть нужный хост и посмотреть результат.

Проще написать скрипт полностью на кроне и с отладкой. FILE-APPEND:, по идее должен и по сетке текст добавить в файл.
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Выполнить скрипт перед выключением ПК

Postby ANR Daemon » Sat, 25 Apr 2015, 00:19

Статус сетевого подключения во время выключения системы не определён.
Ваша задача просто не может работать так, как вам хочется. Бу дизайн.
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Re: Выполнить скрипт перед выключением ПК

Postby vasiliy » Fri, 15 May 2015, 12:45

Проблему решил убрав кнопки выключения и выход из системы из меню пуск и добавив ярлыки на скрипты, которые и выполняют их действие, но с небольшой задержкой.
vasiliy
 
Posts: 7
Joined: Mon, 30 Mar 2015, 14:47


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 4 guests