Executar um arquivo em lotes com o agendador de tarefas do Windows

Eu tenho um arquivo de lote daily.bat, este é o código:

cd C:\inetpub\wwwroot\infoweb\factuur\cron c:\PHP\php.exe -f ./cron_pdf.php ftp -s:ftp_upload.txt ftp.site.be 

E criei uma tarefa com o agendador de tarefas no Windows 7. Quando executo o lote manualmente, tudo corre bem, mas quando tento executá-lo com o agendador de tarefas, nada acontece.

Minha ação é

 'run script' "C:\inetpub\wwwroot\site\x\cron\daily.bat" 

O UAC está desativado e sou administrador.

Alguma idéia porque isso não está funcionando?

Eu enfrentei o mesmo problema, mas encontrei outra solução sem ter que modificar meu script em lote.

A única coisa que eu perdi é na opção ‘Action’ – “Start in (Opcional)”.

Vá às propriedades da tarefa -> guia Ação -> Editar -> Encher como abaixo:

  1. Ação : iniciar um programa
  2. Programa / script : caminho para o script em lote, por exemplo, C:\Users\beruk\bodo.bat
  3. Adicione argumentos (opcional) :
  4. Comece em (opcional) : Coloque o caminho completo para o seu local de script em lote, por exemplo, C:\Users\beruk\ (Não coloque aspas ao redor de Iniciar em)

Então clique em OK

Funciona para mim. Boa sorte!

Nenhum dos methods acima funcionou. Eu tentei desta forma como disse em um tutorial e funcionou.

Ação: inicie um programa

Programa / script: cmd

Adicione argumentos:
/c start "" "E:\Django-1.4.1\setup.bat"

Trabalhei para mim no Win7 Pro. Você deve ter uma conta com uma senha (senhas em branco não são boas)

Para aqueles cujos arquivos bat ainda não estão funcionando no Windows 8+ Task Scheduler, uma coisa que eu gostaria de acrescentar à resposta de Ghazi – depois de muito sofrimento:

1) Em Ações, escolha “Criar tarefa BASIC “, não “Criar tarefa”

Isso fez isso por mim, além das outras questões para não esquecer:

  1. Use o caminho Start In para o seu arquivo de lote, mesmo que seja opcional
  2. use aspas, se precisar, na sua input Iniciar um programa> programa / script, ou seja, “C: \ meus scripts \ runme.bat” …
  3. MAS NÃO use aspas no campo Iniciar em. (Louco, mas é verdade!)

Isso funcionou sem qualquer necessidade de acionar um prompt de comando.

(Desculpe o meu representante é muito baixo para adicionar a minha dica de tarefa básica para comentários de Ghazi)

Certifique-se de que “Start In” NÃO tenha CITAÇÕES.

Está funcionando agora. Isso foi o que eu fiz. Você provavelmente não precisará de todas essas etapas para que funcione, mas apenas para ter certeza de experimentar todas elas:

  • Verifique os parâmetros da conta da sua tarefa agendada e verifique se eles estão configurados para serem executados, independentemente de alguém estar ou não conectado à máquina

  • verifique a execução com a maioria dos privilégios / direitos

  • Certifique-se de que você vá para o caminho completo primeiro: cd C: \ inetpub \ wwwroot \ infoweb \ factuur \ cron

  • Não use aspas duplas em seus arquivos de lote (não sei por que, mas parece ajudar)

  • Seja super admin, digite ‘Net user administrator / active: yes’ no prompt de comando, efetue logout e faça login como super admin, então o UAC está desativado

Tive um problema em que minha tarefa não estava sendo triggersda porque estava sendo executada em um laptop sem um cabo de alimentação … Na guia Condições, por padrão, ele é verificado para que uma tarefa não seja executada enquanto a energia CA não estiver conectada.

No Windows 7 Pro, descobri que a solução da Arun funcionou para mim: eu poderia fazer isso funcionar mesmo com “nenhum usuário logado”, eu escolhi usar os priveledges mais altos.

A partir da experiência passada, você deve ter uma conta com uma senha (senhas em branco não são boas), e se o programa não solicitar a senha quando você terminar o assistente, volte e edite algo até que o faça!

Este é o método caso não seja claro o que funcionou

 Action: start a program Program/script : cmd (doesn't need the .exe bit!) Add arguments: /c start "" "E:\Django-1.4.1\setup.bat" 

Eu mexi com isso por várias horas e tentei várias sugestões diferentes.

Eu finalmente consegui fazer o seguinte:

Ação: iniciar um programa

Programa / Script: C: \ scriptdir \ script.bat

Adicionar argumentos (opcional) script.bat

Comece em (opcional): c: \ scriptdir

executar apenas quando o usuário efetuou login

executar com privilégios mais altos

configurar para: Windows Vista, Windows Server 2008

Certifique-se de que “Start In” NÃO termine com um BACKSLASH.

Se todo o resto falhar por você, assegure-se de que o usuário que você está tentando executar a tarefa tenha access ao arquivo que você está tentando usar.

No meu caso, eu estava tentando executar um arquivo em lotes de C: \ Users \ Administrator \ Desktop que a conta não podia acessar. Movendo-o para um local neutro em C: \ resolveu o problema.

Por favor, verifique qual conta de usuário você usa para executar nossa tarefa. Pode acontecer de você executar sua tarefa com um usuário diferente do seu usuário padrão, e este usuário requer alguns privilégios extras. Também pode acontecer que a tarefa seja executada, mas você não pode ver nenhum efeito porque o arquivo em lote aguarda alguma resposta do usuário, então, verifique o gerenciador de tarefas se você vir o processo em execução. Uma vez que aconteça, eu programo um lote com svn update de alguma página web e o processo trava porque o svn pediu para aceitar o certificado do servidor.

  1. Não use aspas duplas no seu arquivo cmd / batch
  2. Certifique-se de ir para o início do caminho completo em (opcional) :
    C: \ Arquivo_necessário \ Reqular_task \ QDE \ cmd_practice \

insira a descrição da imagem aqui

Usando o botão Executar na janela principal do Agendador de Tarefas para testar várias variações, finalmente encontramos as configurações corretas. Essas duas opções devem ser combinadas: -Execute somente quando o usuário estiver conectado -Execute com privilégios mais altos. Todas as outras variações falharam. É irritante o tempo todo desperdiçado nisso, mas pelo menos funciona. SO: VERSÃO DO WINDOWS 8 CORE (BASIC)

Tente executar a tarefa com altos privilégios.

coloque um \ no final do caminho em “start in folder” como c: \ temp \

Eu não sei porque, mas isso funciona para mim às vezes.