Указание рабочего каталога для запланированных задач с помощью schtasks.exe - PullRequest
36 голосов
/ 15 января 2009

У меня есть приложение, которое вызывается по расписанию. Он перешел с Windows Server 2003 на Windows Server 2008. В 2003 году приложение работало в каталоге, где находился исполняемый файл. В 2008 Environment.CurrentDirectory (C #) сообщает, что работает в C: \ Windows \ System32. Как мне установить работающий каталог? Я использую schtasks.exe для развертывания из командной строки.

UPD : через интерфейс на экране редактирования действия появляется поле «Начать (необязательно)».

UPD : похоже, использование XML-файла может помочь, но я надеюсь обойтись без него.

Ответы [ 7 ]

51 голосов
/ 10 декабря 2014

Просто хотел добавить детали, которые действительны для Windows Server 2008 и 2012. Как многие люди могут лучше понять снимки экрана, вот снимок экрана:
enter image description here

Подводя итог. Когда вы создаете действие для запланированной задачи, у вас есть возможность установить поле «Начать с (необязательно)» (округленное красным на снимке экрана). Это будет каталог, из которого запускается ваш процесс.

Надеюсь, это поможет!

13 голосов
/ 21 апреля 2009

Недавно я столкнулся с той же проблемой. Я решил это, добавив ключ / V1 в команду schtasks.

/ V1 создает запланированную задачу, совместимую с предварительной версией, и автоматически заполняет каталог Start In.

8 голосов
/ 18 февраля 2009

Вы можете установить запуск в каталоге, используя следующую команду

Ключом является ключ \ in / tr.

SCHTASKS /Create /u username /p pswd /ru "NT AUTHORITY\SYSTEM"
  /rp /sc ONSTART /tn task-name /tr "\"D:\name-of-file-to-run\" "
7 голосов
/ 06 февраля 2009

Пожалуйста, посмотрите мой ответ на похожий вопрос о том, как установить параметр «Разбудить компьютер для запуска этой задачи ...», который доступен только из пользовательского интерфейса планировщика задач (и через XML ), а не командная строка schtasks.exe /create.

Гайки и болты этого:

  1. Создайте свою задачу с помощью schtasks.exe /create /tn MyTask ...
  2. Экспорт вашей задачи в XML с помощью schtasks.exe /query /xml /tn MyTask > MyTask.xml
  3. Обновить этот XML через XSLT или выполнить поиск / замену
  4. Повторный импорт (перезапись старого задания) через schtasks.exe /create /tn MyTask /xml MyTask.xml /f

Подробности здесь .

2 голосов
/ 02 августа 2017

Я надеюсь, что люди увидят этот ответ для подхода XML (честно говоря, я думаю, что это более чистый метод, и есть лучшая документация о том, какие параметры вы можете установить для настройки определенных функций в задаче).

Шаг 1: создайте файл XML, который устанавливает все параметры задачи , несколько мест для получения дополнительной информации об элементах XML:

Шаг 2: Определите, «где» задача будет выполняться с (как в начальном каталоге сценарий будет запущен в командной строке, это напрямую связано с вопросом ОП ... Вы нужно будет настроить параметр так ...

<?xml version="1.0" encoding="UTF-16"?> 
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> 
  <RegistrationInfo> 
    <Date>2012-08-19T16:49:14.6182</Date> 
    <Author>YOUR-COMPUTER-DOMAIN\YOUR-USERNAME</Author> 
  </RegistrationInfo>

    ... a bunch of other stuff in between here ....

  <Actions Context="Author"> 
    <Exec> 
      <Command>C:\PythonEXE\mini_program_test.exe</Command> 
      <Arguments></Arguments> 
      <WorkingDirectory>C:\Some\where\here\</WorkingDirectory> 
    </Exec>
  </Actions> 
</Task> 

Обратите внимание выше , что в параметре WorkingDirectory нет кавычек - я допустил эту ошибку ранее.

Шаг 3: Поскольку вы будете использовать schtasks.exe , чтобы СОЗДАТЬ эту новую задачу через XML, посмотрите здесь для получения дополнительной информации: https://msdn.microsoft.com/en-us/library/bb736357.aspx

Шаг 4. В командной строке Windows вы выполните что-то вроде этого (как только ваш XML будет готов)

C:\>schtasks /CREATE /TN "TASK-NAME-HERE" /RU "YOUR-USERNAME" /RP "YOUR-PASSWORD" /XML C:\YOUR-XML-FILE-LOCATION\ready.xml

Надеюсь, это немного поможет - развлекайся!

2 голосов
/ 30 декабря 2011

Попробуйте cd /d "<WorkingDirectory>" & schtasks <SchtasksParams>

Измените рабочий каталог и запустите schtasks .

0 голосов
/ 28 января 2013

Используйте My.Application.Info.DirectoryPath в приложении без необходимости настройки XML.

...