Планировщик заданий не запускает bat файл

Обновлено: 07.07.2024

У меня есть пакетный файл с кодом ниже, чтобы остановить и запустить службу отчетов SQL:

Я настроил запланированное задание на ежедневное выполнение, в настоящее время оно выполняется как СИСТЕМА с самыми высокими установленными привилегиями. Я настроил опцию "Начать в папке" в действии, и, кажется, все настроено правильно. Но когда я запускаю задачу, кажется, ничего не происходит, она говорит, что задача была выполнена, но я не вижу, что служба была перезапущена так, как это было задумано.

Убедитесь, что вы правильно установили параметры "Пуск в" и "Программа / скрипт". Если адрес вашего файла: C:\Temp\foo.bat, установите для параметра "start in" значение "C: \ Temp", а для параметра "Program / script" - "foo.bat".

Чтобы установить параметр "Начать с": щелкните правой кнопкой мыши задачу в планировщике задач. > Properties > Actions > Edit.

Если это само по себе не работает, попробуйте переместить файл.bat в каталог с основными разрешениями (например, в общий каталог).

У меня была проблема, когда мой файл.bat находился в папке с некоторыми ограничительными разрешениями, так что только моя учетная запись пользователя могла получить к нему доступ. Несмотря на то, что я настроил планировщик задач для использования моих учетных данных, он все равно не удался. Перемещение файла.bat в другой каталог решило проблему.

Потратил много времени на эту глупую проблему!

добавьте команду cd туда, где находится ваш пакетный файл, в первой строке вашего пакетного файла и посмотрите, решит ли он проблему.

СОВЕТ: пожалуйста, используйте абсолютные пути, в идеале относительные пути не должны быть проблемой, но планировщику трудно их понять.

Это довольно старая тема, но проблема все та же -

Я пробовал несколько вещей, ни одна из них не работала -

  1. Добавлен старт в пути (без кавычек)
  2. Удален полный путь к пакетному файлу в поле Program/Script и т. Д.
  3. добавленной C:\Windows\system32\cmd.exe в программу и добавил /c myscript.bat в поле аргументов.

Это то, что сработало для меня -

Поле программы / скрипта - cmd

Добавить аргументы - / c myscript.bat

Начать в: Путь к myscript.bat

У меня такая же проблема. Я считаю, что это проблема привилегий. Если вы выбрали "Запускать только когда пользователь вошел в систему", то этого не произойдет.

Надеюсь, вы уже поняли это, но я хотел зарегистрировать это здесь для следующего человека, который потратил на это часы.

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

Я создал командный файл, который удаляет все файлы из временной папки при каждом запуске компьютера. Я создал основную задачу в планировщике заданий и надеялся на лучшее. К сожалению, ничего не произошло, когда мой компьютер загрузился. После долгих проб и ошибок я понял, как запустить скрипт.

В этой статье я расскажу вам о настройках и разрешениях, которые необходимо настроить, чтобы ваш пакетный файл работал без ручного вмешательства.

Шаг 1. Проверьте права доступа к файлам и папкам

Первым шагом к решению этой проблемы является обеспечение того, чтобы учетная запись, используемая для запуска сценария в планировщике заданий, имела разрешения «Полный доступ» для папки, содержащей сценарий, самого сценария и любых папок / файлов, к которым сценарий обращается при запуске.


Как видите, учетная запись пользователя Aseem была явно добавлена ​​и получила разрешение «Полный доступ». Теперь вы должны сделать то же самое для папки, содержащей скрипт, и для самого скрипта. Не думайте, что если вы дадите разрешения папке, в которой находится скрипт, вам будет удобно, потому что это не так. Наконец, установите разрешения для любых файлов и папок, с которыми будет взаимодействовать скрипт.

В моем случае мне нужно было перейти в C: test, щелкнуть правой кнопкой мыши по этой папке и добавить туда свою учетную запись с разрешениями «Полный доступ». Это немного раздражает, когда вы делаете это, но это единственный способ запустить скрипт.

Примечание. Учетная запись, используемая для запуска сценария, должна входить в локальную группу администраторов на компьютере. В моем случае учетная запись Aseem является учетной записью администратора и, следовательно, является частью локальной группы администраторов.

Шаг 2. Проверьте настройки планировщика заданий

Теперь давайте перейдем к планировщику заданий и изменим там соответствующие настройки. Откройте планировщик задач и найдите свою задачу в разделе «Активные задачи». Они должны быть перечислены в алфавитном порядке.


Дважды щелкните по нему, и он сам откроет задачу в том же окне. Чтобы отредактировать задачу, вам нужно щелкнуть ее правой кнопкой мыши и выбрать «Свойства».


Здесь есть несколько вкладок, и пару вещей нужно проверить и изменить здесь. Во-первых, на вкладке Общие необходимо проверить учетную запись пользователя, которая используется для запуска задачи. В моем случае это учетная запись Aseem, которой я ранее дал разрешения в файловой системе и которая входит в группу администраторов на компьютере.


Далее необходимо выбрать параметр «Выполнить» независимо от того, вошел пользователь в систему или нет, и выбрать Windows Vista, Windows Server 2008 в поле «Настроить для».


На вкладке «Действия» необходимо выбрать сценарий, нажать «Изменить», а затем добавить путь к папке, содержащей сценарий, в поле «Начать с (необязательно)». Это может показаться ненужным, но это не так. В моем случае я поставил в поле C: Users Aseem Documents .

Теперь нажмите OK, чтобы сохранить настройки. Когда вы это сделаете, может появиться диалоговое окно, в котором вы должны ввести пароль для учетной записи пользователя, которая будет запускать задачу. Это выдвигает другое требование. Вы не можете использовать учетную запись, которая не имеет пароля. Учетная запись пользователя должна иметь пароль для запуска задачи.


Наконец, вы должны запустить задачу вручную один раз в планировщике задач, чтобы убедиться, что она выполняется. Если он работает нормально после того, как вы изменили все настройки, тогда он должен работать, когда он должен быть запущен. В моем случае это должно было произойти при запуске, и после внесения изменений все работало нормально.


Обратите внимание, что если ваш сценарий обращается к различным компьютерам в домене при запуске, вы должны попытаться использовать учетную запись администратора домена для запуска задачи. Это гарантирует, что учетная запись имеет достаточно разрешений для доступа к удаленным компьютерам.

Пытаюсь создать задачу в планировщике (шедулере) на сервере, что бы в определенное время запускался ВАТ-файл.

Имею RPD доступ на сервер, права Администратора. Создал задачу. В триггере указал время и отметку "включить", в действии "C:\Program Files\LFTP\main.bat". Вот вроде и всё.

В журнале записано:

Сведения 22.01.2014 10:04:00 102 Задача завершена (2) 1ec4a31c-87a4-4f97-8e00-f095cdbab05a
Сведения 22.01.2014 10:04:00 201 Действие выполнено (2) 1ec4a31c-87a4-4f97-8e00-f095cdbab05a
Сведения 22.01.2014 10:04:00 200 Действие запущено (1) 1ec4a31c-87a4-4f97-8e00-f095cdbab05a
Сведения 22.01.2014 10:04:00 100 Задача запущена (1) 1ec4a31c-87a4-4f97-8e00-f095cdbab05a
Сведения 22.01.2014 10:04:00 129 Обработка созданной задачи Сведения

Но команды, прописанные в файле не выполняются, окно командной строки только на секунду появляется и пропадает(((

Прошу подскажите, что ещё нужно сделать?

Попробовать так:
C:\Windows\system32\cmd.exe /c "C:\Program Files\LFTP\main.bat"

Попытался добавить, было предупреждение, что это аргументы, но задача изменилась, но теперь в журнале ошибка:

Предупреждение 22.01.2014 10:36:00 332 Условия запуска не выполнены, пользователь не выполнил вход Сведения

Как выполнить этот вход?

там галка есть что-то типа "запускать только при залогиненным юзером"

(3) Можете подсказать, где конкретнее это увидеть?

(4) Отметка "Выполнять только для пользователей, вошедших в систему" уже стояла. Результат прежний.

(4) Судя по тому, что "окно командной строки только на секунду появляется и пропадает", пользователь был залогинен. Может не хватает полномочий на какой-нибудь "вход в качестве службы"? Групповую политику смотреть надо. (6) Дело ещё в том, что если запустить ВАТ вручную, то запускается и все делает.

Судя по написанному в (0) батник исправно выполняется.

Причина невыполнения команд либо в правах, либо в рабочем каталоге, что скорее всего.

Добавь в батник строчку
pause
дождись исполнения батника планировщиком и посмотри что там в консоли написано.

Ну либо вывод в текстовый лог файл сделать.
В любом случае проблема с батником, а не с планировщиком. (12) cmd.exe - нативная консольная программа.. на 64-разрядной системе она 64-разрядная

Пробовал установить в "Общие" отментку "Выполнять вне зависимости от регистрации. " и "Выполнять с наивысшими правами. ", потом попросил парольот Админ-а, пароль успешно принять, но ВАТ так и не запускается(((

(9) Дописал. интересно получается:

- при запуске планировщиком, -
Системе не удалось найти указанный путь.
"lftp.exe" не является внутренне или внешней командой, исполняемой программной или пакетным файлом.
C:\Windows\system32>pause

- при запуске вручную, -
Системе не удалось найти указанный путь.
выполняются все команды
C:\Program Files\LFTP>pause

(14)Полные пути пропиши к приложениям, и все будет хорошо.

Я ж говорю что с рабочим каталогом скорее всего проблема.

lftp.exe -f lftp.conf

(18)Замени
lftp.exe -f lftp.conf
на
ПолныйПутьКфайлу\lftp.exe -f lftp.conf
И все заработает. Хотя путь к конфигу тоже придется с полным путем давать.
ПолныйПутьКфайлу\lftp.exe -f ПолныйПутьКконфигу\lftp.conf

Или как вариант
@echo off
CD ПутьКпапкеСбатником

далее по тексту.

Короче была такая ситуёвина. Это происходит когда через RDP прикручивать задание на выполнение батника, а если на прямую с сервера все это проделать работает на ура.( под2005)

(21) Да, Вы были правы, проще конечно перейти в нужный каталог, чем 2 раза писать полный путь у двух файлов, в результате ВАТ имеет вид:

@echo off
cd "C:\Program Files\LFTP"
lftp.exe -f lftp.conf
echo on

Получается, что проблема оказалась в самом ВАТ-файле. Значит один и тот же файл свободно запускается и выполнять все команды, если его запустить вручную, но совсем по другому будет себя вести (совсем не запускаться), если использовать планировщик.

Обо всем, но редко. Основная, преобладающая тематика, быт с упором на технику, софт, компьютер и т. д.

CMD (BAT) конспекты: Планировшик заданий и CMD скрипты. Или почему не работает?

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения


Создав cmd (bat) файлы-скрипты для автоматизации бекапа (backup), столкнулся с проблемой. Созданный файл-скрипт хорошо выполнялся из папки расположения, запускаемый щелчком мыши (у меня настроено на одинарный щелчок), и не хотел должным образом выполняться через планировщик заданий OC MS Windows 8.1.

Гуглением решить проблему не смог, возможно из-за неправильно заданного запроса. Давно подмечено, что "правильно заданный запрос в поисковик Google, решает проблему на 99%"


В дальнейшем эта галочка была снята, так как ставилась она для решения проблемы, которую она не решила.



Так как был не совсем очевиден ход выполнения файла-скрипта, в связи с тем, что в нём была строка запрещающая вывод на экран консоли последовательность выполняемых команд.

Скрипт целиком не даю, в планах написать отдельный пост по скриптовому cmd (bat) бекапу.

После чего запустил скрипт из планировщика заданий, нажав "Выполнить" . Такая корректировка позволила воочию увидеть путь запускаемого скрипта в консоле. Он оказался подозрительно неправильным, намучившись с постоянными запусками своего скрипта, достаточно хорошо запомнил место его расположения. И этот путь, никак не совпадал с запущенным из планировщика заданий. Но на всякий случай проверил, запустив щелчком мыши этот же скрипт в обход планировщика, из папки расположения. Скрин ниже, наглядно демонстрирует причину невыполнения скрипта в планировщике заданий.


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

Стало очевидно, что надо указать в планировщике задач явный путь. Ну, не так, чтобы очевидно, просто помнил, что был какой-то необязательный пункт связанный с расположением папки - "Рабочая папка (необязательно)" , он был пустым и возникал вопрос, а зачем он там нужен и что будет если туда записать этот неявный для планировщика заданий путь.


А вот и само решение проблемы. В поле "Рабочая папка (необязательно)" (ещё и как обязательно) надо добавить рабочую папку, в данном случае это делалось методом выделения из поля "Программа или сценарий", копирования и вставления с яростным использованием правой кнопки мыши.

Заполнив этот пункт правильным местом расположения на винчестере выполняемого скрипта, сохранив результат нажатием на две кнопки ОК и запустив его кнопкой "Выполнить" получил эмоции сравнимые с - "Ура! заработало!". Ощутив некий экстаз от самостоятельно и удачно решенной проблемы, решил зеконспектировать ход выполнения своих действий в виде записи в свой блог. Кстати, галочку "Выполнит с наивысшими правами" - снял, было интересно как поведет себя скрипт - работает и без неё.

Для тех у кого не работают картинки, текстовой ход (один из множества вариантов) выполнения последовательных действий в ОС Windows 8.1. Щелчок правой кнопкой мыши по кнопке пуск; в появившимся меню ищем и щелчком мыши нажимаем на "Управление Компьютером" ; в окне "Управления Компьютером" ищем "Служебные программы" и в них "Планировщик Заданий", в котором находим папку с нерадивым файлом-скриптом; мышкой выделяем наш файл-скрипт, а щелчком правой кнопки мыши, получаем список контекстного меню, в котором нажимаем "Свойства" ; в открывшимся диалоговом окне "название файла скрипта - свойства" нажимаем вкладку "Действие", выделяем нужный нам скрипт (в моем случае он один, но в принципе может быть и больше) и нажимаем на кнопку "Изменить. " ; в следующем появившимся диалоговом окне ищем поле "Рабочая папка (необязательно)" и вводим нужный нам путь (без конечного файла скрипта, просто путь, где лежит сам файл скрипт); нажимаем кнопку ОК везде где она присутствует; проверяем на работоспособность скрипт - нажимая на "Выполнить", как вариант воспользовавшись контекстным меню вызванного щелчком правой кнопки мыши по названию файла-скрипта, при этом не забывая сверятся с полученным конечным результатом.

Решалась проблема наверно больше недели. Правда стоит отметить, что решалась она спустя рукава, не спеша, в ожидании когда проблема решится сама, на подобии - меня осенило (эврика).

Ну, а в заключении решил, аналогично написанным выше образом, сравнить на правильность "взятия" файла-скрипта, запустив его и из планировщика заданий и из места расположения в ручном режиме. Все пути в консоли совпадают, независимо от того как он запускается.

Файл архива заблаговременно нормально создается в папке-источнике в виде 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 или одно и то же и нет смысла пробовать?

Конфигурация компьютера
Процессор: Intel Core i7-3770K
Материнская плата: ASUS P8Z77-V LE PLUS
Память: Crucial Ballistix Tactical Tracer DDR3-1600 16 Гб (2 x 8 Гб)
HDD: Samsung SSD 850 PRO 256 Гб, WD Green WD20EZRX 2 Тб
Видеокарта: ASUS ROG-STRIX-GTX1080-O8G-11GBPS
Звук: Realtek ALC889 HD Audio
Блок питания: be quiet! Straight Power 11 650W
CD/DVD: ASUS DRW-24B5ST
Монитор: ASUS VG248QE 24"
ОС: Windows 8.1 Pro x64
Индекс производительности Windows: 8,1
Прочее: корпус: Fractal Design Define R4
и смотреть содержимое log1.txt и log2.txt в папке Temp.

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

и смотреть содержимое 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 - пустой создался

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

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

Конфигурация компьютера
Процессор: Intel Core i7-3770K
Материнская плата: ASUS P8Z77-V LE PLUS
Память: Crucial Ballistix Tactical Tracer DDR3-1600 16 Гб (2 x 8 Гб)
HDD: Samsung SSD 850 PRO 256 Гб, WD Green WD20EZRX 2 Тб
Видеокарта: ASUS ROG-STRIX-GTX1080-O8G-11GBPS
Звук: Realtek ALC889 HD Audio
Блок питания: be quiet! Straight Power 11 650W
CD/DVD: ASUS DRW-24B5ST
Монитор: ASUS VG248QE 24"
ОС: Windows 8.1 Pro x64
Индекс производительности Windows: 8,1
Прочее: корпус: Fractal Design Define R4
alef2474, смотреть файлы, которые создаются при выполнении задания в планировщике.
alef2474, смотреть файлы, которые создаются при выполнении задания в планировщике. »

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

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

Конфигурация компьютера
Процессор: Intel Core i7-3770K
Материнская плата: ASUS P8Z77-V LE PLUS
Память: Crucial Ballistix Tactical Tracer DDR3-1600 16 Гб (2 x 8 Гб)
HDD: Samsung SSD 850 PRO 256 Гб, WD Green WD20EZRX 2 Тб
Видеокарта: ASUS ROG-STRIX-GTX1080-O8G-11GBPS
Звук: Realtek ALC889 HD Audio
Блок питания: be quiet! Straight Power 11 650W
CD/DVD: ASUS DRW-24B5ST
Монитор: ASUS VG248QE 24"
ОС: Windows 8.1 Pro x64
Индекс производительности Windows: 8,1
Прочее: корпус: Fractal Design Define R4

Нету диска Z там.

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

Диск есть. Если я даю 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 и задание в планировщике. Но можно ли мешать задания от разных пользователей не знаю.

Читайте также: