Войти

Показать полную графическую версию : [решено] Планировщик, кто нить объясните что это за зверь?


ev83gen
22-03-2017, 13:10
На win 2003 есть скрипт, скомпилированный в megavigr.exe. рядом лежит файл megavigr.ini. Суть такая: ночью через планировщик запускается megavigr.exe, он берет список баз, пути к ним и пароли из megavigr.ini. Все работает как часы.
Я хочу перенести все на win 2008 R2, соответственно в обоих файлах все поправил, закидываю в планировщик и тишина, запускаю руками все работает, в логах запись:

2017-03-22 12:46:09 : MegaVigr start at 22.03.2017 12:46:09
2017-03-22 12:46:09 : kolvo is 49
2017-03-22 12:46:09 : freespace is 1024
2017-03-22 12:46:09 : starting 1 job of 49
2017-03-22 12:46:09 : job 1, create C:\Users\454B~1.TAI\AppData\Local\Temp\2\megavigr.prm
2017-03-22 12:46:09 : job 1, write C:\Users\454B~1.TAI\AppData\Local\Temp\2\megavigr.prm
2017-03-22 12:46:09 : job 1, close C:\Users\454B~1.TAI\AppData\Local\Temp\2\megavigr.prm
2017-03-22 12:46:09 : job 1, make dir for vigruzka c:\megavigr\zip\2017_12\
2017-03-22 12:46:09 : job 1, check free space on drive c:\
2017-03-22 12:46:09 : job 1, check free space on drive c:\ success!
2013-08-26 06:04:28 : job 1, write registry base O:\1c_base\Buh.buh\, name Buh
2013-08-26 06:04:28 : job 1, start vigruzka
2013-08-26 06:05:18 : job 1, vigruzka over
2013-08-26 06:05:18 : job 1, delete registry base O:\1c_base\Buh.buh\, name Buh
2013-08-26 06:05:18 : job 1, save log to o:\megavigr\log\Buh.txt

В планировщике нажимаю на задание правой кнопкой ->выполнить и ничего.
Иду в логи и вижу:
2017-03-22 14:42:36 : MegaVigr start at 22.03.2017 14:42:36
2017-03-22 14:42:36 : kolvo is 0
2017-03-22 14:42:36 : freespace is 1024

Получается он не может прочесть строку количество и пишет 0 или вообще файл ini не видит, но почем ручками работает?
В планировщике ставил галку и для зарегистрированных и не зависимо от регистрации, галку с высшими привилегиями тоже ставил.
На форумах находил информацию что иногда из под прав доменного Админа отказывается работать, создал пользователя с правами админа, дал на папки, где лежит скрипт, полные права еще явно. Результата нет.

начало кода скрипта(потому как далее не идет):

$year=@YEAR
$week=_WeekNumberISO(@YEAR,@MON,@MDAY)
if $week < 10 and stringlen($week)=1 then $week='0' & $week
$day=@WDAY-1
if $day=0 then $day=7
$Year = @YEAR
$kolvo=iniread("megavigr.ini","settings","kolvo","0")
$freespace=iniread("megavigr.ini","settings","freespace","1024")
$syslogfile=iniread("megavigr.ini","settings","syslogfile","c:\1.log")
_FileWriteLog($syslogfile,"MegaVigr start at " & _Now())
_FileWriteLog($syslogfile,"kolvo is " & $kolvo)
_FileWriteLog($syslogfile,"freespace is " & $freespace)
$default_name=iniread("megavigr.ini","0","name","pusto")
$default_path=iniread("megavigr.ini","0","path","pusto")
$default_user=iniread("megavigr.ini","0","user","user")
$default_pass=iniread("megavigr.ini","0","pass","pass")
$default_vigrpath=iniread("megavigr.ini","0","vigrpath","pusto")
$default_vigrname=iniread("megavigr.ini","0","vigrname","pusto")
$default_logneed=iniread("megavigr.ini","0","logneed","1")
$default_logpath=iniread("megavigr.ini","0","logpath","pusto")
for $i=1 to $kolvo
_FileWriteLog($syslogfile,"starting " & $i & " job of " & $kolvo )
$v_name=iniread("megavigr.ini",$i,"name",$default_name)
$v_path=iniread("megavigr.ini",$i,"path",$default_path)
$v_user=iniread("megavigr.ini",$i,"user",$default_user)
$v_pass=iniread("megavigr.ini",$i,"pass",$default_pass)
$v_vigrpath=iniread("megavigr.ini",$i,"vigrpath",$default_vigrpath)
$v_vigrname=iniread("megavigr.ini",$i,"vigrname",$default_vigrname)
$v_logneed=iniread("megavigr.ini",$i,"logneed",$default_logneed)
$v_logpath=iniread("megavigr.ini",$i,"logpath",$default_logpath)
if $v_name = $default_name Then
_FileWriteLog($syslogfile," job " & $i & " have bad name " & $v_name )
ContinueLoop
Else
EndIf
if $v_path = $default_path Then
_FileWriteLog($syslogfile," job " & $i & " have bad path " & $v_path )
ContinueLoop
Else
EndIf
if $v_user = "" Then $v_user=$default_user
if $v_user = "" Then
_FileWriteLog($syslogfile," job " & $i & " have bad user " & $v_user )
ContinueLoop
Else
EndIf
if $v_pass = "" Then $v_pass=$default_pass
if $v_pass = "" Then
_FileWriteLog($syslogfile," job " & $i & " have bad pass " & $v_pass )
ContinueLoop

Вот часть файла ini:

[settings]
kolvo = 49
freespace=1024
syslogfile=c:\1.log
[0]
name=дефолтовые настройки
path=
user=Администратор
pass=11111111
vigrpath=c:\megavigr\zip\
vigrname=
logneed=1
logpath=c:\megavigr\log\
[1]
name=Бухгалтерия
path=O:\1c_base\Buh.buh\
user=
pass=
vigrpath=
vigrname=Buh_buh
logneed=
logpath=

Что не так с этим планировщиком, подскажите где я не прав, а то я к врачу пойду скоро!!

Iska
22-03-2017, 16:17
Начните с проверки существования файла megavigr.ini. Он у Вас по умолчанию ищется в текущем каталоге. Добавьте в код отображение текущего каталога и сравните показания на 2003 и 2008 R2 серверах из-под планировщика.

ev83gen
23-03-2017, 08:21
Ну файл то существует, я же его туда положил, да и при запуске ручками все отрабатывает. Но идею понял, попробую.

cameron
23-03-2017, 09:03
disk O: планировщику доступен?
для тестов сделайте c:\scripts\ и переведите все пути туда, потому уже экспериментируйте.

Iska
23-03-2017, 09:32
Ну файл то существует, я же его туда положил, да и при запуске ручками все отрабатывает. »
Судя по коду, Вы просто рассчитываете на то, что он будет наличествовать в текущем каталоге. Судя по логу, Ваши надежды не оправдываются. Вывод?

Но идею понял, попробую. »
Опробуйте. Начните с проверки текущего каталога, выведете его полный путь в лог. Затем проверьте есть ли в текущем каталоге данный файл, выведете результат проверки в лог. Сразу станет понятнее.

ev83gen
23-03-2017, 17:33
Так, добавил в скрипт пару строчек:

#include <File.au3>
#include <Date.au3>
$year=@YEAR
$week=_WeekNumberISO(@YEAR,@MON,@MDAY)
if $week < 10 and stringlen($week)=1 then $week='0' & $week
$day=@WDAY-1
if $day=0 then $day=7
$Year = @YEAR
$kolvo=iniread("megavigr.ini","settings","kolvo","0")
$freespace=iniread("megavigr.ini","settings","freespace","1024")
$syslogfile=iniread("megavigr.ini","settings","syslogfile","c:\1.log")
$filelist = _FileListToArray(@ScriptDir, "*", 1)
_FileWriteFromArray(@ScriptDir & "\filelist.txt", $filelist)
_FileWriteLog($syslogfile,"MegaVigr start at " & _Now())
_FileWriteLog($syslogfile,"kolvo is " & $kolvo)


вот результат filelist.txt:

3
megavigr.au3
megavigr.exe
megavigr.ini

а в файле 1.log все тоже:

2017-03-23 19:26:43 : MegaVigr start at 23.03.2017 19:26:43
2017-03-23 19:26:43 : kolvo is 0
2017-03-23 19:26:43 : freespace is 1024
2017-03-23 19:30:27 : MegaVigr start at 23.03.2017 19:30:27
2017-03-23 19:30:27 : kolvo is 0
2017-03-23 19:30:27 : freespace is 1024


Получается система видит файл *.ini

А не может быть дело в кодировке что ли? Я просто не понимаю, почему планировщик так влияет на скрипт...

ev83gen
24-03-2017, 11:28
Все проблему решил, в планировщике обязательно нужно рабочую папку указывать и все работает, всем спасибо кто откликнулся.




© OSzone.net 2001-2012