Це може допомогти зрозуміти проблему з іншого погляду. Скажімо, ви програміст, якому доручено додати планувальник завдань до Windows. Як би ти це зробив? У вас є кілька проблем, з якими можна зіткнутися: Якщо завдання виконується як хтось інший, ніж зареєстрований користувач, чи слід дратувати зареєстрованого користувача будь-якою помилкою? Що робити, якщо користувач не зареєструвався під час виконання завдання? Як щодо різниці між програмою GUI та консольною програмою? GUI не мають stdin, stdout та stderr; поняття в них безглуздо. Що з внутрішніми або зовнішніми програмами COMMAND.COM/CMD.EXE? Або інші двигуни сценаріїв? А як щодо шляхів із пробілами у назві команди? Або в параметрах (параметри / аргументи)? (Як ви зараз намагаєтеся впоратися.)
Хоча я не на 100% впевнений у внутрішніх або повних технічних деталях у цьому випадку, відповіді, здається, є .. Завдання виконуються в ізольованому, неінтерактивному сеансі, який не може взаємодіяти з користувачем, який наразі увійшов у систему (за наявності ); Він очікує, що консольного виходу не буде, оскільки він не інтерактивний, він не може просто перервати будь-якого зареєстрованого користувача, щоб показати вихід, як би там не було (і якщо є вихід, stdin - це bitbucket / NULL, stdout та stderr, щоб увійти до нього систему реєстрації системи); Проміжки обробляються шляхом обходу питання: ім'я команди приймається ТОЧНО, як є, а параметри передаються команді вказуються в іншому полі вводу у властивостях Завдання.
Все, що означає, що ваше завдання потрібно виконувати так, ніби це було як демон (у світі Un * x). Все статично і точно. Ім'я команди - власне ім'я команди без будь-яких параметрів. Сюди часто входять запущені інтерпретатори команд / скриптів, такі як CMD.EXE! Параметри, якщо такі є, вказані в іншому місці і повинні бути відомі під час налаштування завдання (тобто ви не можете змінити параметри "під час руху"). І так далі.
Отже, якщо ви хочете включити параметри, вам потрібно використовувати розділ параметрів, щоб вказати параметри. Планувальник завдань цього не робитьспробуйте розібрати ім'я команди, щоб розділити її на "команду" та "аргументи", як це роблять програми командного рядка. Це просто трактує це як одне велике, повне ім'я команди. Так само, якщо ви хочете змінювати параметри, наприклад, використовувати% 1 ..% n у файлах BATCH, ви не можете цього зробити з самого планувальника завдань; Вам доведеться знайти інший спосіб. (Зверніть увагу, що ви також не можете використовувати змінні середовища, оскільки середовище, передане програмі, залежить від середовища, з якого починається завдання, а не "поточного" середовища.) Ви можете використовувати тимчасовий файл для збереження параметрів, але оскільки повинні вказати статичне ім'я файлу у властивостях Завдання, що відбувається, коли ви знаходитесь у мережі з 5000 користувачами, і чотири з них намагаються одночасно виконати одне завдання? Усі вони одночасно намагаються записати в той самий тимчасовий файл, напевно, не те, чого хотіли. (Є і рішення цієї проблеми, але це занадто далеко виходить за рамки цього питання та відповіді.)
Отже, остаточна відповідь: У простому випадку - шлях, який ви хочете пройти як параметр, є статичним і не змінюється - вам або потрібно вказати параметри у відповідному властивості Завдання (Аргументи), а не у вікні Program / Script або використовувати пакетний файл. У більш складному випадку - вам потрібно буде задати правильне запитання або дослідити, як працюють демони та як використовувати блокування / семафори та інше для міжпроцесорного спілкування (IPC).
Удачі.