PDA

Показать полную графическую версию : [решено] Запуск bat-файла в планировщике


alef2474
20-09-2013, 12:06
Попытался вставить в планировщик(Task Scheduler) bat-файл ежедневного копирования архива на другой диск.
Bat-файл состоит из одной строчки:
xcopy "d:\arhiv\acc\New folder\%date:~0,2%%date:~3,2%%date:~8,2%.zip" z:\arc

Файл архива заблаговременно нормально создается в папке-источнике в виде DDMMYY.zip (тоже через планировщик с "похожим" bat-файлом)
Если этот bat-файл запускать вручную (он на раб столе админа), то он нормально срабатывает: возникает черное окно комстроки, которое висит полминуты пока копируется файл, потом оно исчезает, копирование происходит.

Если же создано задание на выполнение этого файла в планировщике, то задание вроде выполняется: в истории заданий пишется Task triggered, Task Started, Action Started, Created Task Process, Action Completed, Task Completed но никакого копирования не происходит, причем Action Completed successfully with return code 4. (4 мне кажется плохой код? нормальный -0)

В задании для подстраховки я задавал и пароль сисадмина, и Run with highest privileges, и Run whether user logged on or not. Запускал и по времени и вручную - результат один, копирование не выполняется. Причем иногда, когда запускаешь в планировщике вручную, то задание зависает на статусе Running(без фиксации запуска в истории), а иногда просто остается Ready без реального выполнения копирования, но с записью в историю о выполнении.

Проверил я и версию, что имя файла заданное через %date не передается планировщиком, создал аналогичный bat-файл, котором
xcopy "d:\arhiv\acc\New folder\200913.zip" z:\arc
С эти файлом все так же, вручную копирует, а в планировщике "успешно" выполняется, но не копирует.

Запускал Process Monitor параллельно с заданием: там много операций выскакивает, но все с результатом SUCCESS, кроме одной
cmd.exe RegQueryValue HKLM\Software\Microsoft\Windows NT\CurrentVersion\GRE_Initialize\DisableMetaFiles NAME NOT FOUND Length:20


Вопрос: Task Sheduler по природе глючный? Или я что-то неправильно делаю? И что можно использовать вместо него бесплатного, если глючный?
Механизм AT-команд - это другое чем Task Sсheduler или одно и то же и нет смысла пробовать?

volodija@vk
20-09-2013, 13:13
Советую не насиловать себя, а поставить Cobian Backup, там всё очень просто и гибко настраивается.

alef2474
20-09-2013, 15:14
Советую не насиловать себя, а поставить Cobian Backup, там всё очень просто и гибко настраивается. »

Т.е. Вы подтверждаете, что планировщик - глючный?
Нашел Cobian Backup даже на oszone.net
http://soft.oszone.net/program/3321/Cobian_Backup/

Но, похоже, что Cobian Backup не имеет функции запуска bat-файла по расписанию или копирования файлов с изменяющимся со временем именем.

unname1983@vk
20-09-2013, 16:19
alef2474, От какого пользователя запускается задание? И что с правами пользователя от которого это задание запускается?
volodija@vk, запускается с помощью штатного планировщика, бэкап всей системы из трех или четырех батников, работает все без проблем....зачем ставить что-то если стандартный планировщик вполне справляется со своими функциями.

alef2474
20-09-2013, 16:22
От какого пользователя запускается задание? И что с правами пользователя от которого это задание запускается? »

С этим все в порядке, имхо, запускается с правами доменного админа на доменном контроллере 2008R2.
А проблема как раз в работе штатного планировщика. Может он не все команды может выполнять, например, xcopy?
или ему путь к выполняемой программе надо прописывать в bat?

unname1983@vk
20-09-2013, 16:32
alef2474, да не...что значит не все...запускает то система, а не планировщик, планировщик просто запускает в определенное время с определенными правами.
Посмотри в локальной политике контроллера, "Вход в качестве пакетного задания" - какие пользователи у тебя там?

Petya V4sechkin
20-09-2013, 18:03
копирования архива на другой диск
Что за другой диск?

alef2474
20-09-2013, 18:23
Что за другой диск? »

Другой диск - это сетевой накопитель D-link DNS-325, подключенный как диск z: к серверу под учеткой доменного админа.
(Понятно, что надо копировать с этого комп-а на что-то другое сетевое.)
Может UNC имя надо писать в команде, типа \\х.х.х.х\base ?
Диск (и папка base) нормально открывается без всяких паролей с любого комп-а в подсети, даже не включенного в домен.
Опять же повторю: вручную bat-файл нормально запускается и копирует.

Посмотри в локальной политике контроллера, "Вход в качестве пакетного задания" - какие пользователи у тебя там? »

Где это надо смотреть? Что запускать и в какой ветке?(по-английски) Если Вы про gpmc и ddcp, то там все по-умолчанию стоит,
я не "балуюсь" групповыми политиками. В compConf/userConf-preferences-CPS-sheduledTasks пусто. Если secpol.msc, то где?
Для эксперимента выбрал на вкладке General задания пользователя SYSTEM и запустил вручную. Опять в истории сделались записи об успехах, ничего не скопировалось, а статус задания еще завис на Running, пришлось отключать.

Petya V4sechkin
20-09-2013, 18:25
Другой диск - это сетевой накопитель
Но ведь подключение сетевых дисков существует только для текущего пользователя.

alef2474
20-09-2013, 18:42
Но ведь подключение сетевых дисков существует только для текущего пользователя »

У меня от этого самого текущего пользователя - доменного админа задание и запускается и пароль я его ввожу при сохранении задания в Task Scheduler. Там же на вкладке General(Общая) стоит пользователь и кнопка для его замены, если надо.
Может UNC имя надо писать в команде, типа \\х.х.х.х\base ? Попробовал - в случае UNC даже вручную без планировщика ничего не запускается - Invalid Drive Specification (наверно в xcopy нельзя UNC)

Petya V4sechkin
20-09-2013, 18:51
alef2474, можете вставить простую команду:
dir z:\ >%temp%\log1.txt 2>%temp%\log2.txt
и смотреть содержимое log1.txt и log2.txt в папке Temp.

alef2474
20-09-2013, 19:12
и смотреть содержимое log1.txt и log2.txt в папке Temp. »

Вставил dir перед xcopy в bat-файл и получил
Если смотреть в c:\windows\temp,
то log1.txt - пустой создался. А log2.txt с текстом The system cannot find the path specified.

А если смотреть в c:\users\Administrator.Server\AppData\Local\Temp\22 то
то log1.txt - с нормальным показом дерева на z: по команде dir, а log2.txt - пустой создался

Непонятно, где смотреть, просто поиск запустил по С:

И что результат означает?

Petya V4sechkin
20-09-2013, 19:16
alef2474, смотреть файлы, которые создаются при выполнении задания в планировщике.

alef2474
20-09-2013, 19:28
alef2474, смотреть файлы, которые создаются при выполнении задания в планировщике. »

При выполнении bat в планировщике(там вручную запускаю правой кнопкой и Run) нахожу в c:\windows\temp,
log1.txt - пустой создался. А log2.txt с текстом The system cannot find the path specified.
(после предыдущих экспериментов я все удалил)

Те другие, видимо, создавались, когда я запускал без планировщика.

Petya V4sechkin
20-09-2013, 20:34
The system cannot find the path specified
Нету диска Z там.

Может UNC имя надо писать в команде, типа \\х.х.х.х\base ? Попробовал - в случае UNC даже вручную без планировщика ничего не запускается - Invalid Drive Specification
Попробуйте подключить перед копированием:
net use z: \\х.х.х.х\шара

alef2474
20-09-2013, 21:29
Нету диска Z там. »

Попробуйте подключить перед копированием: »

Диск есть. Если я даю net use z: ... то выдается ошибка The local device name already in use
И сам диск виден в проводнике и около него написано Volume_1(x.x.x.x)(Z : )

Получается странная ситуация, что действительно диск подключен от имени Administrator.Server, а не Administrator.Domain (как Вы предположили ранее)
Хотя я захожу на сервер под логином domain\administrator , но моя папка в c:\users оказывается имеет имя Administrator.Server вместо Administrator.Domain как должно бы было быть, наверно. Потому что у дополнительно созданного администратора домена domain\admin2
она имеет имя Admin2.Domain

Задание в планировщике запускается от имени domain\administrator, а для этого имени выходит диск z: не создан, т.к. я вообще не могу зайти под эти именем, т.к. все время попадаю на другое имя при заходе.
Причем от имени того недоступного мне администратора запускается bat файл. Такая получается двойственность нахождения в системе: под одним именем подключаются диски и локально нормально запускаются программы, а под другим именем создаются задания в планировщике. Как эту двойственность устранить - не знаю.

В результате я понял еще свою странную ошибку в UNC имени и добился запуска bat-файла в планировщике.
xcopy воспринимает UNC имена, но для моего сетевого накопителя это UNC надо писать как \\x.x.x.x\volume_1\base
т.е. после ip повторять еще как бы netbios имя. Мало того в xcopy надо было добавить ключ /Y, т.к. где-то запоминалось имя и теневой bat файл планировщика спрашивал, перезаписывать ли его и зависал на этом месте, не копируя, о чем я писал.

С использованием UNC я ухожу от невозможности задать букву для диска. Разве что можно попробовать зайти другим админом и от него задать и букву Z и задание в планировщике. Но можно ли мешать задания от разных пользователей не знаю.

Спасибо за помощь.

James Marsh
22-09-2013, 11:08
1. Если NAS настраивали прямо с КД, то отключите нас от сети и снесите с кд приблуду для управления насом, удалятся те самые злополучные непонятные Volume_1(x.x.x.x)(Z : ) »
2. На насе настраивате шары так, что бы пойдя по пути Пуск-Выполнить-\\х.х.х.х было видно список сетевых папок (как на обычном файл сервере).
3. Зайдите консольно (подключив моник и клаву+мышь) на сервер под доменным админом и примонтируйте сетевой диск Z (Y,X какой нужен) в ту сетевую папку которая нужна.
4. Все задание выполняйте одним пакетным файлом (архивация и копирование). В качестве параметров пишите ПОЛНЫЕ пути файлов, потому как планировщик запускает cmd.ехе в только ему известном месте. В начале пакетного файла на всякий случай пишите команду примонтировать сетевой диск (вдруг что случилось и сетевой диск отвалился).
5. п3. получен благодаря личным наблюдениям: если монтировать сетевые диски и писать задачи в планировщик через рдп (mstsc /console, mstsc /admin) то они могут не выполняться (хотя должны).
6. Если у вас нас рядом с сервером (по сети) то в пакетном файле архивируйте прямо на него (куда - диск зе).
Чем проще цепочка архивирования, тем она надежнее.




© OSzone.net 2001-2012