Como executar uma tarefa agendada com “schtasks” sem abrir uma nova janela de linha de comando?

6

Eu tenho um arquivo em lotes que cria uma tarefa agendada usando schtasks da seguinte forma:

schtasks /create /tn my_task_name 
                 /tr "...\my_path\my_task.bat"
                 /sc daily
                 /st 10:00:00 
                 /s \my_computer_name 
                 /u my_username    
                 /p my_password

Funciona bem, exceto pelo fato de que quando my_task.bat é executado - uma nova janela de linha de comando é aberta (e fechada após a execução).

Gostaria de evitar a abertura desta nova janela (ou seja, executar a tarefa no modo silencioso, em segundo plano).

Eu pensei em usar

start /b ...\my_path\my_task.bat

mas eu não sei como, porque desde que eu tenho que chamar start do arquivo de lote eu preciso precedê-lo com cmd /c , que novamente faz com que a nova janela seja aberta.

Como eu poderia resolver esse problema?

    
por Misha Moroshko 03.10.2010 / 04:27

4 respostas

1

Por fim, usei este código para resolver o problema:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "...\my_task.bat" & Chr(34), 0
Set WshShell = Nothing

salvou em run_my_task.vbs e agendou run_my_task.vbs com schtasks como acima.

    
por 08.10.2010 / 06:51
3

Acredito que você está vendo a caixa porque a conta que você configurou para executá-la é sua. Tente um destes:

1: Execute a tarefa como o usuário NT Authority \ System

2: crie uma nova conta e defina a tarefa para ser executada com suas credenciais

    
por 03.10.2010 / 05:27
3

Você pode fazer isso especificando a opção / RU para schtasks. Esta opção

specifies the user account (user context) under which the task runs. For the system account, valid values are "", "NT AUTHORITY\SYSTEM" or "SYSTEM".

E assim, tente isso

schtasks /create /tn my_task_name 
                  ....
                 /st 10:00:00 
                 /ru "SYSTEM"
                 ....
    
por 08.02.2011 / 15:46
1

Talvez esteja usando o comando AT e não inclua a opção /interactive .

Exemplo: AT \my_computer_name 10:00AM /EVERY:M,T,W,Th,F,S,Su "...\my_path\my_task.bat"

Se você precisar de credenciais específicas para my_task.bat, você provavelmente terá que colocar RUNAS no comando porque acredito que o comando será executado no contexto de segurança da Agenda ( Task Scheduler), que é a conta "Sistema local". Adicionar o comando RUNAS e as opções antes de seu arquivo BAT deve corrigir isso.

    
por 03.10.2010 / 10:12