Ответ 1
Недавно я столкнулся с той же проблемой. Как я решил, это добавить переключатель /V 1 в команду schtasks.
/V1 создает запланированную задачу, совместимую с предварительным представлением, и автоматически заполняет каталог Start In.
У меня есть приложение, которое вызывается запланированной задачей. Он переместился с Windows Server 2003 на Windows Server 2008. В 2003 году приложение запускалось в каталоге, в котором находился исполняемый файл. В 2008 году Environment.CurrentDirectory
(С#) сообщает, что он работает в C:\Windows\System32. Как установить текущую директорию? Я использую schtasks.exe для развертывания в командной строке.
UPD: через интерфейс, кажется, это поле "Начать в (необязательное)" на экране редактирования действия.
UPD: похоже, что использование XML файла может помочь, но я хочу обойтись без него.
Недавно я столкнулся с той же проблемой. Как я решил, это добавить переключатель /V 1 в команду schtasks.
/V1 создает запланированную задачу, совместимую с предварительным представлением, и автоматически заполняет каталог Start In.
Просто хотел добавить данные, которые действительны для Windows Server 2008 и 2012. Как многие люди могут лучше понять снимки экрана, вот скриншот:
Подводя итог. Когда вы создаете действие для запланированной задачи, у вас есть возможность установить поле "Начать в (необязательное)" (округленное красным цветом на снимке экрана). Это будет каталог, из которого запускается ваш процесс.
Надеюсь, это поможет!
Вы можете установить начало в каталог, используя следующую команду
Ключ\находится в переключателе /tr.
SCHTASKS /Create /u username /p pswd /ru "NT AUTHORITY\SYSTEM"
/rp /sc ONSTART /tn task-name /tr "\"D:\name-of-file-to-run\" "
См. мой ответ на аналогичный вопрос, о том, как установить параметр "Пробуждать компьютер для запуска этой задачи...", который доступен только с Пользовательский интерфейс планировщика заданий (и через XML), а не командную строку schtasks.exe /create
.
Гайки и болты:
schtasks.exe /create /tn MyTask ...
schtasks.exe /query /xml /tn MyTask > MyTask.xml
schtasks.exe /create /tn MyTask /xml MyTask.xml /f
Попробуйте cd /d "<WorkingDirectory>" & schtasks <SchtasksParams>
Измените рабочий каталог, а затем запустите schtasks.
Я надеюсь, что люди увидят этот ответ для XML-подхода (честно говоря, я считаю, что это более чистый метод, и там есть более подробная документация о том, какие параметры вы можете настроить для настройки определенных функций в задаче тоже).
Шаг 1: создайте XML файл, который задает все параметры задачи, несколько мест для дополнительной информации о XML-элементах:
Шаг 2: Конкретно для "where" задача будет выполняться с (как в стартовом каталоге script начнется в командной строке, это напрямую связано с вопросом OP. Вам необходимо настроить такой параметр...
<?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>
Обратите внимание, что не указано никаких кавычек в параметре WorkDirectory. Я сделал эту ошибку раньше.
Шаг 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
Надеюсь, это поможет немного - получайте удовольствие!
Используйте My.Application.Info.DirectoryPath в приложении без необходимости настройки XML.