Запустить пакетный файл с помощью планировщика задач Windows

155

У меня есть пакетный файл daily.bat, это код:

cd C:\inetpub\wwwroot\infoweb\factuur\cron
c:\PHP\php.exe -f ./cron_pdf.php
ftp -s:ftp_upload.txt ftp.site.be

И я создал задачу с помощью планировщика задач в Windows 7. Когда я запускаю пакет вручную, все идет хорошо, но когда я пытаюсь запустить его с помощью планировщика задач, ничего не происходит.

Мое действие

'run script' "C:\inetpub\wwwroot\site\x\cron\daily.bat"

UAC выключен, и я администратор.

Есть идеи, почему это не работает?

Ruben
источник
Не уверен, что этот вопрос является оффтопом, но вы можете получить лучшие ответы на serverfault.com для него.
Ганс Олссон
Спасибо, я также постараюсь опубликовать это на serverfault
Рубен
это тоже может быть полезно: serverfault.com/questions/734035/…
Рубен

Ответы:

287

Я столкнулся с той же проблемой, но нашел другое решение, не меняя свой пакетный скрипт.

Единственное, что я пропустил, это в настройках «Действие» - «Начать с (необязательно)».

Перейдите в свойства задачи -> вкладка Действие -> Изменить -> Заполните, как показано ниже:

  1. Действие : запустить программу
  2. Программа / скрипт : путь к вашему пакетному скрипту, напримерC:\Users\beruk\bodo.bat
  3. Добавьте аргументы (необязательно) : <при необходимости - в зависимости от вашего сценария>
  4. Начать с (необязательно) : укажите полный путь к местоположению вашего пакетного сценария, например C:\Users\beruk\(Не ставьте кавычки вокруг Начать с)

Затем нажмите ОК

Меня устраивает. Удачи!

Гази
источник
8
Я знаю, что оригинальный пост довольно старый. Но этот пост был в числе самых популярных ссылок в поиске Google, когда я пытался найти ответ на эту проблему. Поэтому я думаю, что хотел бы поделиться результатами. На всякий случай, любой, включая меня, забывает об этом.
Гази
4
Я не верю, что вам действительно нужно значение «Начать (необязательно)» - я могу запустить простой автономный файл .bat без него. Спасибо за четкие шаги - очень полезно для тех, кто ищет простую прогулку!
DCaugs
23
@DCaugs, без Start Inнабора параметров мой запланированный пакетный файл не будет работать вообще. (Windows 7)
Джастин Скилз
2
Это решение не сработало для меня. Ответ, предоставленный @Arun Raja, работал нормально.
Cagy79
7
@DCaugs Это Start inосновная причина, по которой это сработало для меня.
Густаво
54

Ни один из вышеуказанных методов не сработал. Я попробовал это так, как сказано в учебнике, и это сработало.

Действие:

Start a program 

Программа / скрипт:

cmd

Добавьте аргументы:

/c start "" "E:\Django-1.4.1\setup.bat"

Работал для меня на Win7 Pro. Вы должны иметь учетную запись с паролем (пустые пароли не годятся)

Арун Раджа
источник
1
Я согласен! ни одно из предыдущих решений не работало для меня на Windows Server 2008. Этот ответ помог мне! Спасибо.
Cagy79
Я хотел бы дать вам +2000. Весь день я пробовал разные подходы, и ничего, кроме вашего решения, не получилось. Мне пришлось запустить командный файл, который, в свою очередь, запускает другой пакетный файл 10 раз с другими параметрами. С консоли все работало нормально, но планировщик задач отказывался открывать более 4 процессов одновременно. Это было странно ... С вашей техникой все 10 процессов были запущены.
Икар
Этот метод работал для меня. Но в планировщике на вкладке истории задача сразу же завершается успешно, поскольку задача - это cmd, а не файл .bat, который она запускает. Поскольку файл bat, операция резервного копирования, заканчивается через 2-3 часа, я понятия не имею о его состоянии.
Azzurroverde
вам нужно сохранить почтовое уведомление в конце завершения файла bat, чтобы уведомить его статус. это один из способов.
Арун Раджа
Это сработало в сочетании с подсказкой о том, что он должен быть настроен на запуск в указанном каталоге, как указано в принятом ответе @ Ghazi, и убедитесь, что выбран «запуск с наивысшими привилегиями».
Mheavers
43

Для тех, чьи файлы bat все еще не работают в планировщике задач Windows 8+, я бы хотел добавить одну вещь к ответу Гази - после долгих страданий:

1) В разделе «Действия» выберите «Создать базовую задачу», а не «Создать задачу».

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

  1. Используйте начальный путь к вашему пакетному файлу, даже если он говорит необязательно
  2. используйте кавычки, если вам нужно, в разделе «Запустить программу»> «программа / скрипт», например «C: \ my scripts \ runme.bat» ...
  3. НО НЕ используйте кавычки в поле «Начать в». (Сумасшедший, но правда!)

Это работало без необходимости запуска командной строки.

(Извините, мой представитель слишком низок, чтобы добавить мой совет по основной задаче в комментарии Гази)

micstr
источник
21

Убедитесь, что «Start In» не имеет цитаты.

Джонатан
источник
7

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

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

  • проверка запуска с большинством привилегий / прав

  • Сначала убедитесь, что вы идете по полному пути: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • Не используйте двойные кавычки в своих пакетных файлах (не знаю почему, но, кажется, это помогает)

  • Будьте супер-администратором, введите «Net user administrator / active: yes» в командной строке, выйдите из системы и войдите как супер-администратор, чтобы UAC был выключен

Ruben
источник
2
Извините, но это очень плохо написанный ответ. Я хотел бы убедиться, что правильный ответ выбран в качестве принятого ответа.
jwize
5

Убедитесь, что «Start In» НЕ заканчивается BACKSLASH.

Майкл Кехо
источник
1
Не могли бы вы уточнить, к какой версии ОС или типу задачи или к какой информации эта информация применима? Принятый ответ включает \, поэтому он должен работать в некоторых системах - где он не работает?
Lessthanideal
Это исправило запланированную задачу «foo.cmd» для меня на Windows Server 2012. При «Start in», установленном в «C: \ Foo \», задача завершилась неудачно с ошибкой кода завершения 0x8007001, но с «Start in», установленной в «C». : \ Foo 'задача прошла нормально.
Аарон
5

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

Chriz
источник
3

Под Windows7 Pro я обнаружил, что решение Аруна работает для меня: я мог заставить его работать даже без «входа в систему», я решил использовать самые высокие привилегии.

Исходя из прошлого опыта, у вас должна быть учетная запись с паролем (пустые пароли не годятся), и если программа не запрашивает у вас пароль после завершения работы мастера, вернитесь назад и отредактируйте что-нибудь, пока не получится!

Это метод в случае, если неясно, который работал

Action: start a program
Program/script : cmd
      (doesn't need the .exe bit!)
Add arguments:
    /c start "" "E:\Django-1.4.1\setup.bat" 
Брюс Метелеркамп
источник
3

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

Я наконец получил это, сделав следующее:

Действие: запустить программу

Программа / скрипт: C: \ scriptdir \ script.bat

Добавить аргументы (необязательно) script.bat

Начать с (необязательно): c: \ scriptdir

запускается только когда пользователь залогинен

работать с самыми высокими привилегиями

настроить для: Windows Vista, Windows Server 2008

Робб
источник
2

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

В моем случае я пытался запустить командный файл из C: \ Users \ Administrator \ Desktop, к которому у учетной записи не было доступа. Перемещение в нейтральное место на C: \ решило проблему.

Винс
источник
1

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

user6039542
источник
1
  1. Не используйте двойные кавычки в вашем командном файле
  2. Убедитесь, что вы переходите к полному пути запуска (необязательно) :
    C: \ Needed_file \ Reqular_task \ QDE \ cmd_practice \

введите описание изображения здесь

Шахидул Ислам Молла
источник
1

Я выкладываю ответ на этот вопрос здесь и здесь .

введите описание изображения здесь

ToCarbajal
источник
Если вы уверены, что другой ответ корректен, вы можете пометить вопрос как дублированный.
Бадро Ниайми
0

Используя кнопку «Выполнить» в главном окне планировщика заданий, чтобы протестировать несколько вариантов, наконец-то нашли правильные настройки. Эти две опции должны быть объединены: -Run только когда пользователь вошел в систему -Run с самыми высокими привилегиями. Все остальные варианты провалились. Это бесит все время впустую, но, по крайней мере, это работает. ОС: WINDOWS 8 ОСНОВНАЯ (ОСНОВНАЯ) ВЕРСИЯ

sapitron
источник
0

Попробуйте запустить задачу с высокими привилегиями.

поставьте \ в конце пути в «start in folder», например, c: \ temp \

Я не знаю почему, но иногда это работает для меня.

С Джи
источник
0

Действие: Start a Program

Программа / скрипт: C:\Windows\System32\cmd.exe

Добавьте аргументы: /k start "" "E:\scripts\example.bat"

Добавьте exitв конец вашего командного файла.

Окно cmd не будет отображаться, если вы выберете Run whether user is logged in or not. Вам нужно выбрать, Run only when user is logged onчтобы увидеть окно в действии.

Этан Аллен
источник