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


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.