Планировщик заданий не запускает bat файл
I have a batch file with the code below to stop and start the SQL Report service:
I have set up the scheduled task to run daily, it currently runs as SYSTEM with the highest privileges set. I have set up the start in folder option on the action, and everything generally seems to be set up correctly. But when I run the task nothing seems to happen, it says the task has run but I cant see that the service has been restarted as it is meant to.
Can someone direct me to what I am missing? Thanks
Does it work if you use your user credentials rather than system? That will be a good test to see if it is functioning as a scheduled task. Maybe rem out the net start line and verify that the service has actually stopped - to see if permissions is an issue.
I've edited it so it only has the stop line and I have tried using my credentials, and those of another user but it didnt stop the service. I can run the batch file by itself, not with the task, and it works fine
Maybe it's not being launched correctly or there is still a permissions issue - or there is more in the batch file that we haven't yet seen.
The batch only contains the bit i've copied in above. I've just read elsewhere that if the batch contains quotes then it wont run from a task. Is this the case? If so how can I get around it?
You've misunderstood the quote comment, or it's plain wrong. On the command line you need to double quote any terms that contain spaces and other poison characters, but they will work fine. In task scheduler you may need to launch the batch file like this: cmd /c "c:\myfolder\mybatch.bat"
Шаг 2. Проверьте настройки планировщика заданий
Теперь перейдем к планировщику заданий и изменим там соответствующие настройки. Откройте планировщик задач и найдите свою задачу в разделе « Активные задачи ». Они должны быть перечислены в алфавитном порядке.
Дважды щелкните по нему, и он сам откроет задачу в том же окне. Чтобы отредактировать задачу, вам нужно будет щелкнуть ее правой кнопкой мыши и выбрать « Свойства» .
Здесь есть несколько вкладок, и пару вещей нужно проверить и изменить здесь. Во-первых, на вкладке Общие необходимо проверить учетную запись пользователя, которая используется для запуска задачи. В моем случае это учетная запись Aseem, которой я ранее дал разрешения в файловой системе и которая входит в группу администраторов на компьютере.
Далее необходимо выбрать параметр « Выполнить» независимо от того, вошел пользователь в систему или нет, и выбрать Windows Vista, Windows Server 2008 в поле « Настроить для» .
На вкладке « Действия » необходимо выбрать сценарий, нажать « Изменить», а затем добавить путь к папке, содержащей сценарий, в поле « Начать в (необязательно)» . Это может показаться ненужным, но это не так. В моем случае я поставил в поле C: \ Users \ Aseem \ Documents \ .
Теперь нажмите OK, чтобы сохранить настройки. Когда вы это сделаете, может появиться диалоговое окно, в котором вы должны ввести пароль для учетной записи пользователя, которая будет запускать задачу. Это выдвигает другое требование. Вы не можете использовать учетную запись, которая не имеет пароля. Учетная запись пользователя должна иметь пароль для запуска задачи.
Наконец, вы должны запустить задачу вручную один раз в планировщике задач, чтобы убедиться, что она выполняется. Если он работает нормально после того, как вы изменили все настройки, то он должен работать, когда он должен быть запущен. В моем случае это должно было произойти при запуске, и после внесения изменений все работало нормально.
Обратите внимание, что если ваш сценарий обращается к различным компьютерам в домене при запуске, вы должны попытаться использовать учетную запись администратора домена для запуска задачи. Это гарантирует, что учетная запись имеет достаточно разрешений для доступа к удаленным компьютерам.
Еще один момент, на который следует обратить внимание, - это если ваш скрипт обращается к ресурсам в общем сетевом ресурсе. Если ваш скрипт использует буквы для доступа к сети, он может не работать. Например, вместо того, чтобы использовать F: \ data \, вы должны использовать в сценарии \\ machinename \ share_name \ data \ . Если вы все еще не можете запустить скрипт, оставьте здесь комментарий, и я постараюсь помочь. Наслаждайтесь!
Шаг 1. Проверьте права доступа к файлам и папкам
Первым шагом к решению этой проблемы является обеспечение того, чтобы учетная запись, используемая для запуска сценария в планировщике заданий, имела разрешения «Полный доступ» для папки, содержащей сценарий, самого сценария и любых папок / файлов, к которым сценарий обращается при запуске.
Например, я создал следующий пакетный скрипт ниже:
Я сохранил файл .BAT в папку «Мои документы». Путь C: \ Users \ имя пользователя \ Documents . Я пошел в C: \ Users \ username, щелкнул правой кнопкой мыши на папке Documents и нажал на Properties . Затем я нажал на вкладку Безопасность .
Как видите, учетная запись пользователя Aseem была явно добавлена и получила разрешение « Полный доступ». Теперь вы должны сделать то же самое для папки, содержащей скрипт, и для самого скрипта. Не просто предполагайте, что если вы дадите разрешения для папки, содержащей сценарий, вы можете идти, потому что это не так. Наконец, установите разрешения для любых файлов и папок, с которыми будет взаимодействовать скрипт.
В моем случае мне нужно было перейти в C: \ test, щелкнуть правой кнопкой мыши по этой папке и добавить туда свою учетную запись с разрешениями «Полный доступ». Это отчасти раздражает, что вы должны это делать, но это единственный способ запустить скрипт.
Примечание . Учетная запись, используемая для запуска сценария, должна входить в локальную группу администраторов на компьютере. В моем случае учетная запись Aseem является учетной записью администратора и, следовательно, является частью локальной группы администраторов.
18 Answers 18
Make sure you set the 'Start in' and 'Program/script' options correctly. If your file address is: C:\Temp\foo.bat, set the 'start in' option to 'C:\Temp' and the 'Program/script' option to 'foo.bat'.
To set the 'Start in' option: Right click task in the task scheduler > Properties > Actions > Edit.
If this alone doesn't work then try moving the .bat file to a directory with basic permissions (maybe a shared directory for example).
I had a problem where my .bat file was located in a folder with some restrictive permissions on it, so that only my user account could access it. Even though I had set up the task scheduler to use my credentials it still failed. Moving the .bat file to another directory sorted the issue.
Пытаюсь создать задачу в планировщике (шедулере) на сервере, что бы в определенное время запускался ВАТ-файл.
Имею 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 Обработка созданной задачи Сведения
Но команды, прописанные в файле не выполняются, окно командной строки только на секунду появляется и пропадает(((
Прошу подскажите, что ещё нужно сделать?
Попытался добавить, было предупреждение, что это аргументы, но задача изменилась, но теперь в журнале ошибка:
Предупреждение 22.01.2014 10:36:00 332 Условия запуска не выполнены, пользователь не выполнил вход Сведения
Как выполнить этот вход?
(3) Можете подсказать, где конкретнее это увидеть?
(4) Отметка "Выполнять только для пользователей, вошедших в систему" уже стояла. Результат прежний.
(4) Судя по тому, что "окно командной строки только на секунду появляется и пропадает", пользователь был залогинен. Может не хватает полномочий на какой-нибудь "вход в качестве службы"? Групповую политику смотреть надо.
Судя по написанному в (0) батник исправно выполняется.
Причина невыполнения команд либо в правах, либо в рабочем каталоге, что скорее всего.
Добавь в батник строчку
pause
дождись исполнения батника планировщиком и посмотри что там в консоли написано.
Ну либо вывод в текстовый лог файл сделать.
В любом случае проблема с батником, а не с планировщиком.
Пробовал установить в "Общие" отментку "Выполнять вне зависимости от регистрации. " и "Выполнять с наивысшими правами. ", потом попросил парольот Админ-а, пароль успешно принять, но ВАТ так и не запускается(((
(9) Дописал. интересно получается:
- при запуске планировщиком, -
Системе не удалось найти указанный путь.
"lftp.exe" не является внутренне или внешней командой, исполняемой программной или пакетным файлом.
C:\Windows\system32>pause
- при запуске вручную, -
Системе не удалось найти указанный путь.
выполняются все команды
C:\Program Files\LFTP>pause
Я ж говорю что с рабочим каталогом скорее всего проблема.
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
Получается, что проблема оказалась в самом ВАТ-файле. Значит один и тот же файл свободно запускается и выполнять все команды, если его запустить вручную, но совсем по другому будет себя вести (совсем не запускаться), если использовать планировщик.
(24)Если вы запускаете его вручную то рабочий каталог = каталогу в котором он расположен.
Если запускаете планировщиком, то рабочий каталог= каталог пользователя.
А в каталоге пользователя нет нужных файлов которые вы вызываете, поэтому он и не может их выполнить.
В этой статье рассказывается о настройках и разрешениях, которые вам нужно изменить, чтобы ваш командный файл запускался без ручного вмешательства.
Шаг 1. Проверьте права доступа к файлу / папке
Первым шагом к устранению этой проблемы является обеспечение того, чтобы учетная запись, которую вы используете для запуска сценария в планировщике задач, имела разрешения полного доступа к папке, содержащей сценарий, сам сценарий и любые папки / файлы, к которым сценарий прикасается при запуске.
Например, создать следующий пакетный скрипт ниже:
Я сохранил файл .BAT в папке «Документы». Путь: C: \ Users \ username \ Documents . Зайти в C: \ Users \ username, кликнуть правой кнопкой мыши папку « Документы » и выбрал « Свойства» . Затем я перешел на вкладку « Безопасность ».
Как видите, учетная запись пользователя Aseem была явно добавлена, и ей было предоставлено разрешение « Полный доступ». Теперь вам нужно проделать то же самое с папкой, содержащей сценарий, и с самим сценарием. Не думайте, что если вы дадите разрешения для папки, содержащей сценарий, все в порядке, потому что это не так. Наконец, установите разрешения для любых файлов и папок, с которыми будет взаимодействовать скрипт.
В моем случае мне пришлось перейти в C: \ test , кликнуть правой кнопкой мыши по этой папке и добавить туда мою учетную запись с разрешениями «Полный доступ». То, что вам приходится это делать, немного раздражает, но это единственный способ запустить скрипт.
Примечание . Учетная запись, которая используется для запуска сценария, должна входить в локальную группу администраторов на компьютере. В моем случае учетная запись Aseem является учетной записью администратора и, следовательно, частью локальной группы администраторов.
Шаг 2. Проверьте настройки планировщика заданий
Теперь перейдем в Планировщик заданий и изменим там соответствующие настройки. Откройте планировщик задач и найдите свою задачу в разделе « Активные задачи ». Они должны быть перечислены в алфавитном порядке.
Дважды кликните по нему, и задача откроется сама по себе в том же окне. Чтобы отредактировать задачу, вам нужно кликнуть ее правой кнопкой мыши и выбрать « Свойства» .
Есть несколько вкладок, и здесь нужно проверить и изменить пару вещей. Во-первых, на вкладке « Общие » вам необходимо проверить учетную запись пользователя, которая используется для запуска задачи. В моем случае это учетная запись Aseem, которой я ранее давал разрешения в файловой системе и которая является частью группы администраторов на компьютере.
Затем вам нужно выбрать параметр « Запускать независимо от того, вошел ли пользователь в систему или нет», и выбрать Windows Vista, Windows Server 2008 в поле « Настроить для» .
На вкладке « Действия » необходимо выбрать сценарий, нажать « Изменить» и затем указать путь к папке, содержащей сценарий, в поле « Начать в (необязательно)» . Это может показаться ненужным, но это не так. В моем случае я помещаю в поле C: \Users\Aseem\Documents\ .
Теперь нажмите ОК, чтобы сохранить настройки. Когда вы это сделаете, может появиться диалоговое окно, в котором вам нужно будет ввести пароль для учетной записи пользователя, которая будет запускать задачу. Это вызывает еще одно требование. Вы не можете использовать учетную запись без пароля. Учетная запись пользователя должна иметь пароль для запуска задачи.
Наконец, вы должны запустить задачу вручную один раз в планировщике задач, чтобы убедиться, что она выполняется. Если он работает нормально после того, как вы изменили все настройки, тогда он должен работать, когда он должен быть запущен. В моем случае это должно было произойти при запуске, и после внесения изменений все работало нормально.
Обратите внимание, что если ваш сценарий обращается к различным компьютерам в домене при запуске, вы должны попытаться использовать учетную запись администратора домена для запуска задачи. Это гарантирует, что учетная запись имеет достаточно разрешений для доступа к удаленным компьютерам.
Еще один момент, на который следует обратить внимание, — это если ваш сценарий обращается к ресурсам в общей сетевой папке.
Если ваш сценарий использует буквы для доступа к сети, он может не работать. Например, вместо использования F: \ data \ вы должны использовать в скрипте \\ machinename \ share_name \ data \ . Если вам по-прежнему не удается запустить скрипт, оставьте комментарий здесь, и я постараюсь помочь. Наслаждаться!
У меня была настроена задача в планировщике, которая выполнялась по расписанию.
По сценарию запускался BAT файл. Она успешно выполнялась ранее.
После последних обновлений или еще чего-то, точно не знаю, но она перестала выполняться по расписанию.
Когда настаёт время её выполнения по расписанию, изменяется "Время следующего запуска" на следующий запуск(время передвигается на минуту вперёд), а "Время прошлого запуска" остаётся без изменений. То-есть расписание как бы работает, но сам запуск программы не происходит.
Если в планировщике на этой задаче нажимаю "выполнить" - то она выполняется, а автоматом ни как. Журнал вообще ничего не пишет, пишет только если вручную запускаю задачу.
Сам bat файл правильный. Пользователь для выполнения задачи администратор, и на нём работаю. Пробовал и от СИСТЕМА выполнять - тот же результат.
Пробовал уже и команды в CMD по восстановлению целостности компонентов, даже переустановил систему с помощью refreshtool (несколько раз). Но всё равно ничего не выходит.
Эта цепочка заблокирована. Вы можете просмотреть вопрос или оставить свой голос, если сведения окажутся полезными, но вы не можете написать ответ в этой цепочке.
Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
Если у вас есть файл .BAT, и вы пытаетесь настроить его автоматический запуск с помощью планировщика задач в Windows, возможно, вы столкнулись с проблемой, когда он просто не запускается, если вы не запустите задачу вручную.
Я создал командный файл, который удаляет все файлы из временной папки при каждом запуске компьютера. Я создал основную задачу в планировщике заданий и надеялся на лучшее. К сожалению, ничего не произошло, когда мой компьютер загрузился. После долгих проб и ошибок я понял, как запустить скрипт.
В этой статье я расскажу вам о настройках и разрешениях, которые необходимо настроить, чтобы запустить пакетный файл без ручного вмешательства.
Читайте также: