Доступ до змінних довкілля у плановому завданні


15

Під час налаштування запланованого завдання для розділу дій я намагаюся отримати доступ до змінної середовища для розташування виконуваного файлу, який я хочу запустити. Це головним чином тому, що на одній машині виконуваний файл може бути в C: на іншій він може бути на D: Я переконався, що якщо я використовую жорсткий кодований шлях, виконується моє заплановане завдання, але якщо я зміню дію, щоб вказати "%MyAppPath%\MyApp.exe"на завдання не почне зазнавати збою запуску. Я переконався, що змінна середовища налаштована.

Чи можливо навіть у межах дії (та робочого каталогу) в графіку завдань посилатися на змінну середовища - чи мій синтаксис невірний.

Зі сторони, я думав над тим, щоб викликати файл BAT і посилатися на змінну середовища там, але це для мене нічого не вирішує, оскільки головна проблема насправді полягає в тому, чи є програма (і файл bat також) на C: або D: диски - всередині самого диска шлях такий самий.

ОНОВЛЕННЯ : Виявляється, ви можете використовувати їх для машинного перезавантаження, але, можливо, є кращий спосіб

Відповіді:


23

Вам не потрібно перезавантаження машини. Вам слід скасувати Taskeng.exe, і при наступному виконанні запланованого завдання воно отримає оновлене середовище.


Дякую, так mcuh! Я боровся з цим цілими днями. Я намагався перезапустити службу Scheduler безрезультатно в Win7 / Win2008 (для запуску її потрібно запустити як SYSTEM), але це набагато простіше!
— Тимур

2

Я думав, що ви можете посилатись на змінні середовища із Планувальник завдань, але щойно спробувавши, це не схоже на те, що ви можете.

Одне виняток видається %PATH%таким, чи можна було б додати своє MyAppPathзначення %PATH%колекції на кожній машині, а потім просто зателефонувати MyApp.exeз планувальника завдань, де машина зможе вирішити повністю кваліфікований шлях у міру необхідності?


1
Цікаво, що я просто спробував% PATH% і не зміг змусити його працювати. У цей момент я помітив дурну помилку, коли я оновлював% PATH%. Я виправив помилку друку і перевірив, що PATH добре у вікні DOS, але заплановане завдання все-таки повідомило про проблему - вказавши, що він бачить "погану" версію% PATH%. Перезавантаження потрібне було для отримання змін (оскільки ви не можете перезапустити планувальник завдань). У цей момент виявилося, що я можу зараз використовувати свою оригінальну змінну середовища. Таким чином, підсумок полягає в тому, що ви можете використовувати змінні середовища, але для перегляду будь-яких змін / нових змінних умов середовища потрібен повний перезавантаження машини
— Пол Хадфілд,

Позначить це як відповідь, як ви були правильні, що ви можете їх використовувати, але якщо планувальник завдань запустився до того, як ви змінили завдання / додали посилання на змінну середовища, знадобиться перезавантажити машину.
— Пол Хадфілд

2
Дивіться відповідь tsvayer - вам не потрібно перезавантажувати машину. Просто процес планування завдань.
— Ben Challenor

1

Зі сторони, я думав над тим, щоб викликати файл BAT і посилатися на змінну середовища там, але це для мене нічого не вирішує, оскільки головна проблема насправді полягає в тому, чи є програма (і файл bat також) на C: або D: диски - всередині самого диска шлях такий самий.

%~d0буде розгорнуто до букви диска, де знаходиться пакетний файл. ( %~dp0для диска + + каталог тощо ).


1

Відповідь tsvayer не дуже працювала для мене на комп'ютері під керуванням Windows 7, але вказувала на мене в правильному напрямку. Планувальник завдань здається послугою на моєму комп’ютері; його звуть Schedule; ім'я відображення - Планувальник завдань .

Крім того , його перезапуск з служб MMC, він може бути перезапущений за допомогою наступних wmicкоманд запустити з вікна командного рядка (з правами адміністратора):

wmic service where "name='Schedule'" call StopService
wmic service where "name='Schedule'" call StartService

Ви, звичайно, також можете перезапустити послугу, використовуючи sc:

sc stop Schedule
sc start Schedule

На основі спроб та помилок здається достатнім вимкнути та знову ввімкнути одне завдання, якщо це все, що вам потрібно вплинути:

schtasks /Change /TN \"The name of the task\" /DISABLE
schtasks /Change /TN \"The name of the task\" /ENABLE

0

Зі сторони, я думав про те, щоб викликати файл BAT і посилатися на змінну середовища там, але це для мене нічого не вирішує, оскільки головна проблема насправді знає, чи додаток (і файл bat також) знаходиться на C: або D: диски - всередині самого диска шлях такий самий.

Розгортаючись на відповідь, я використовую двоступеневий процес. Це дозволяє мені використовувати шлях в інших операторах, коли це необхідно.

SET WD=%~dp0
pushd %WD%

ПРИМІТКА: pushdзмінює і диск, і каталог. І якщо ти хотів бути чистим, popdколи закінчиш.

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