2012-06-04 4 views
2

У меня есть программа, которую я пытаюсь запустить при входе в систему, которая зависит от файлов, находящихся в том же каталоге, в котором она находится. Путем ручного запуска программы из командной строки, к которой у меня есть cd'd, все работает так, как должно. Однако, если я планирую задачу для запуска программы, я получаю сообщение об ошибке из своей программы, которая жалуется на то, что не найдет файл, который ему нужен. Итак, мой вопрос (ы) есть /: 1.) Является ли рабочий каталог запланированной задачи местоположением программы? 2.) Если нет, как бы установить рабочий каталог в расположение программы?schtasks: настройка рабочего каталога?

Вот код, я использую Перечне свою задачу:

SCHTASKS /Create /TN "Test" /TR $MyLocation\Test.exe /sc onlogon /RL Highest 

Где «$ MyLocation» является переменной PowerShell, что я набор для ссылки на каталог моей программы.

+0

Этот другой пост выглядит, как он должен ответить на ваши вопросы: http://stackoverflow.com/questions/447774/specifying-the-running-directory-for-scheduled-tasks-using-schtasks-exe –

+0

Я решил это, создав cmd-файл для запланированной задачи, в которой я впервые установил рабочий каталог как тот, который я хотел, чтобы он был, и затем запускал скрипт. – Gisli

+0

@ChrisN: Я видел этот пост, но он не обеспечивает способ, которым я хочу, чтобы моя программа выполнялась. Переключатель/V1 не позволяет вам работать под учетной записью системы. Я пробовал этот код, но не работал. Я не могу предоставить вам ошибку, которую я получил, хотя я могу попробовать ее снова и опубликовать позже. – arynhard

ответ

0

У меня есть это в прошлом, используя пакетный файл. Есть простой трюк, который вы можете использовать в пакетном файле, который даст вам каталог, в котором находится пакетный файл. Таким образом, вы можете очень легко запустить нужное приложение. Создайте пакетный файл со следующим содержимым и поместите его в каталог рядом с вашим приложением, а затем установите его путь как значение для аргумента/TR.

%~dp0\Test.exe 

Строго говоря, обратной косой черты не требуется, поскольку %~dp0 включает в себя обратную косую черту в любом случае. Я думаю, что это делает пакетный файл более читабельным.

+0

«pwd» в Powershell отобразит текущий каталог. – rud3y

+1

@ rud3y Да, но текущий каталог может не быть каталогом, в котором работает скрипт. Например, вы можете 'cd C: \ Foo' then'. C: \ Foo \ Bar \ Baz \ Quux.ps1'. В этом случае '% ~ dp0' будет« C: \ Foo \ Bar \ Baz »и' $ PWD' будет «C: \ Foo». –

+0

хороший звонок :) :) – rud3y

0

Если запустить скрипт и отправить $ MyLocation в качестве параметра то, как это было бы настроить задачу о:

$cmdFile = "$MyLocation\Test.cmd" 
New-Item $cmdFile -type file 
"cd $MyLocation" >> $cmdFile 
"powershell -command '& {$($MyLocation)\Test.exe}'" >> $cmdFile 
SCHTASKS /Create /TN "Test" /TR $cmdFile /sc onlogon /RL Highest 

Gisli

Смежные вопросы