Especificando o diretório de execução para tarefas agendadas usando schtasks.exe
-
22-07-2019 - |
Pergunta
Eu tenho um aplicativo que é chamado por uma tarefa agendada. Moveu-se a partir do Windows Server 2003 para o Windows Server 2008. Em 2003, o aplicativo funcionou no diretório onde o executável foi localizado. Em 2008 Environment.CurrentDirectory
(C #) relatos de que ele está em execução em C: \ Windows \ System32. Como faço para definir o diretório em execução? Estou usando schtasks.exe para implantação de linha de comando.
UPD :. Através da interface, que parece ser o "Iniciar em (opcional)" na tela de ação de edição
UPD :. Looks como usar o arquivo XML pode ajudar, mas eu estou procurando fazer sem ele
Solução
Recentemente, deparei com o mesmo problema. A maneira como eu resolvi que era para adicionar o parâmetro / V1 para o comando schtasks.
/ V1 cria uma pré-vista tarefa agendada compatível e automaticamente preenche o diretório Iniciar em.
Outras dicas
Só queria acrescentar detalhes que são válidas para o Windows Server 2008 e 2012. Como muitas pessoas podem entender capturas de tela melhor aqui é uma captura de tela:
Para resumir. Ao criar a ação para sua tarefa agendada você tem a opção de definir o "Iniciar em (opcional)" (arredondado em vermelho na captura de tela). Este será o diretório de onde o processo é desencadeado.
Espero que isso ajude!
Você pode definir o início no diretório usando o seguinte comando
A chave é o \ no interruptor / tr.
SCHTASKS /Create /u username /p pswd /ru "NT AUTHORITY\SYSTEM"
/rp /sc ONSTART /tn task-name /tr "\"D:\name-of-file-to-run\" "
Por favor, veja minha resposta a uma pergunta semelhante , de como definir a opção 'Acordar o computador para executar esta tarefa ...' que só está disponível a partir do Scheduler UI Task (e via XML), e não a linha de comando schtasks.exe /create
.
O porcas e parafusos de que são:
- Crie a sua tarefa através
schtasks.exe /create /tn MyTask ...
- Exportar sua tarefa de XML via
schtasks.exe /query /xml /tn MyTask > MyTask.xml
- Atualização este XML via XSLT ou uma pesquisa / substituir
- Re-import (substituindo a tarefa de idade) via
schtasks.exe /create /tn MyTask /xml MyTask.xml /f
Tente cd /d "<WorkingDirectory>" & schtasks <SchtasksParams>
Alterar diretório de trabalho e execute schtasks .
Espero que as pessoas verá esta resposta para a abordagem XML (francamente, eu acho que é um método mais limpo e há uma melhor documentação em torno do que os parâmetros que você pode definir a específica configurar os recursos dentro da tarefa também) .
Passo 1: criar o arquivo XML que define todas as configurações de tarefas , vários lugares para mais informações sobre os elementos XML:
- https: // msdn.microsoft.com/en-us/library/windows/desktop/aa383609(v=vs.85).aspx
- https: // msdn.microsoft.com/en-us/library/windows/desktop/aa446863(v=vs.85).aspx
- https: // msdn.microsoft.com/en-us/library/windows/desktop/aa383611(v=vs.85).aspx
- PowerShell script não funcionar corretamente a partir Agendador de Tarefas do Windows
- Agendador de Tarefas a partir da linha de comando
Passo 2: Específico para "onde" a tarefa será executada a partir (como no diretório de iniciar o roteiro terá início na linha de comando, isso está diretamente relacionada à pergunta do OP .... você precisará configurar o parâmetro como assim ...
<?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>
Por favor nota acima que não existem quaisquer aspas no WorkingDirectory paramater -. Eu cometi esse erro antes
Passo 3: Uma vez que você estará usando schtasks.exe , a fim de criar esta nova tarefa através do XML, dê uma olhada aqui para mais informações: https://msdn.microsoft.com/en-us/library/bb736357.aspx
Passo 4: Na janela comando linha, você vai executar algo como isto (uma vez que seu XML está pronto)
C:\>schtasks /CREATE /TN "TASK-NAME-HERE" /RU "YOUR-USERNAME" /RP "YOUR-PASSWORD" /XML C:\YOUR-XML-FILE-LOCATION\ready.xml
Espero que isso ajude um pouco - se divertir
Use My.Application.Info.DirectoryPath na App sem precisar de uma configuração XML.