Запустіть пакетний файл із планувальником завдань 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 вимкнено, а я - адміністратор.

Будь-яка ідея, чому це не працює?


Не впевнений, чи це питання офтопічне, але ви можете отримати кращі відповіді на serverfault.com на нього.
Ганс Ольссон

Дякую, я також спробую опублікувати його на сервері за замовчуванням
Рубен

це також може бути корисним: serverfault.com/questions/734035/…
Рубен

Відповіді:


286

Я зіткнувся з тією ж проблемою, але знайшов інше рішення, не змінюючи пакетний сценарій.

Єдине, що я пропустив, це налаштування "Дія" - опція "Почати в (необов'язково)".

Перейдіть до властивостей завдання -> вкладка Дії -> Редагувати -> Заповніть, як зазначено нижче:

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

Потім натисніть кнопку ОК

Це працює для мене. Щасти!


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, щоб повідомити його статус. це один із способів.
Арун Раджа

Це спрацювало в поєднанні з підказкою про те, що він повинен бути налаштований на запуск у визначеному каталозі, як згадується у прийнятій відповіді @ Газі, переконуючись, що також вибрано "запуск з найвищими привілеями".
mheavers

43

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

1) У розділі Дії виберіть "Створити ОСНОВНЕ завдання", а не "Створити завдання"

Це зробило це для мене, плюс інші питання, які не забувати:

  1. Використовуйте шлях " Пуск в" до вашого пакетного файлу, навіть якщо він пише необов'язково
  2. використовуйте лапки, якщо вам потрібно, у вашій команді Запустіть програму> запис програми / сценарію, тобто "C: \ my script / runme.bat" ...
  3. АЛЕ НЕ використовуйте лапки у полі "Почати". (Божевільний, але правдивий!)

Це спрацювало без потреби запускати командний рядок.

(Вибачте, моя репліка занадто низька, щоб додати мою пораду щодо базових завдань до коментарів Газі)



7

Це працює зараз. Це я і зробив. Вам, напевно, не знадобляться всі ці кроки, щоб він працював, але просто щоб бути впевненим, спробуйте їх усі:

  • Перевірте параметри облікового запису запланованого завдання та переконайтеся, що вони встановлені для запуску, незалежно від того, чи хтось увійшов у машину

  • перевірити запуск з більшістю привілеїв / прав

  • Переконайтеся, що спершу ви перейдете до повного шляху: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

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

  • Будьте супер адміністратором, введіть "Чистий адміністратор / активний: так" у командному рядку, вийдіть із системи та увійдіть як супер адміністратор, тому UAC вимкнено


2
Вибачте, але це дуже погано написана відповідь. Я би переконався, що правильна відповідь обрана як прийнята відповідь.
jwize

5

Переконайтесь, що "Start In" НЕ закінчується BACKSLASH.


1
Не могли б ви уточнити, до якої версії ОС чи типу завдань чи будь-якої цієї інформації застосовна? Прийнята відповідь включає \, тому вона повинна працювати в деяких системах - де це не працює?
найменше

Це виправлено заплановану задачу "foo.cmd" для мене на Windows Server 2012. Якщо "Пуск в" встановлено на "C: \ Foo \", завдання не вдалося з помилкою коду виходу 0x8007001, але для "Пуск в" встановлено значення "C : \ Foo 'завдання спрацювало нормально.
Аарон

5

У мене виникла проблема, коли моє завдання полягало не в тому, що він працював на ноутбуці без шнура живлення ... На вкладці "Умови" за замовчуванням перевіряється, щоб завдання не виконувалося, поки живлення змінного струму не підключено.


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 попросив прийняти сертифікат сервера.


1
  1. Не використовуйте подвійні лапки у вашому cmd / batch-файлі
  2. Переконайтесь, що ви переходите до повного шляху початку (необов’язково) :
    C: \ Ne необходимо_файл \ Reqular_task \ QDE \ cmd_practice \

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


1

Відповідь на це питання розміщую тут і тут .

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


Поки ви впевнені, що інша відповідь виправлена, ви можете позначити це питання як дубльоване.
Badro Niaimi

0

Використовуючи кнопку Run у головному вікні Планувальник завдань, щоб перевірити кілька варіантів, нарешті знайшли правильні налаштування. Ці два параметри потрібно поєднувати: -Запустити лише тоді, коли користувач увійшов у систему, -Запустити з найвищими правами. Усі інші варіанти не вдалися. Це нахабно весь час витрачається на це, але принаймні це працює. ОС: WINDOWS 8 CORE (BASIC) VERSION


0

Спробуйте виконати завдання з високими привілеями.

поставте \ в кінці шляху в "запуск у папку", наприклад 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щоб побачити вікно в дії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.