Tenho vários processos agendados no meu ambiente Windows 7, principalmente para backups, que devem ser executados em segundo plano.
No entanto, em vez de apenas fazer seu trabalho silenciosamente em segundo plano, o agendador de tarefas exibe uma janela preta (do tipo console) taskeng.exe. A janela fica na frente de todas as outras janelas. Felizmente, isso não rouba meu foco no teclado, mas bloqueia a visão de tudo.
Existe uma maneira de evitar essa janela - ou pelo menos aparecer em segundo plano sem roubar meu foco VISUAL?
Exemplo editado após a recompensa aplicada:
Aqui está minha última tentativa de usar o material WScript (em um arquivo chamado RunSignatured.bat):
Set Shell = CreateObject("WScript.Shell")
Shell.Run C:\Users\danh\Bin\signatured.bat, 0, False
O arquivo signatured.bat contém:
cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature
Respostas:
Mais especificamente à recompensa / exemplo de Daniel R Hicks, mas acho que ainda pode ser aplicada ao problema original:
Se for um arquivo em lote sendo iniciado a partir do Agendador de Tarefas, em vez de apenas iniciar o arquivo em lote minimizado / invisível, você provavelmente também precisará modificar o arquivo em lote para executar seus comandos de forma invisível.
Então mude:
Para algo como:
Ou talvez elimine o arquivo em lotes completamente e faça tudo do script (VBS) que você está iniciando diretamente no Agendador de tarefas.
Algo como:
Solução implementada por DanH, em resposta às sugestões de techie007, satisfazendo a recompensa:
Um arquivo, chamado RunSignatured.vbs, contendo:
Observe que o exposto acima depende do java.exe estar no caminho, pois a técnica não funciona com o espaço em branco em Arquivos de programas ao especificar um caminho completo. Não há dúvida de outras maneiras de contornar esse problema, mas isso é para outras pessoas descobrirem.
Em seguida, adicione
RunSignature.vbs
como o nome "programa / script" em "Ação" no Agendador de tarefas.fonte
start /b
abordagem. Nada parecia eliminar a janela - acho que ela foi criada quando você começou a executar o arquivo bat, então já é tarde demais.java
Está fazendo através no caminho de procura OK.)Você pode executar as tarefas agendadas como um usuário diferente, para que elas não interajam com a área de trabalho interativa da sua conta normal. Isso certamente parece funcionar nos servidores Windows2003 que eu administro. Apenas tome cuidado para garantir que as permissões de arquivo e outros detalhes de autenticação estejam definidos, para que as tarefas possam acessar o que precisam quando estão como usuários diferentes.
Editar: ou, em vez de executar uma ferramenta de console diretamente, você pode ter um pequeno script que a executa usando o WScript.Shell.Run com a opção "minimizar, sem alteração de foco":
em seguida, execute isso com o agendador de tarefas (a linha de comando é algo parecido
wscript c:\scripts\test.vbs
) em vez de chamar a ferramenta diretamente. Você também pode chamar arquivos em lote e outros scripts dessa maneira. Há também uma opção "ocultar completamente" (substitua os 7 acima por 0), embora em ambos os casos o ocultar / minimizar controle apenas a janela inicial: se a ferramenta abrir mais a si mesma, eles ainda poderão roubar o foco como antes.Consulte http://msdn.microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx para obter uma lista completa de opções para o método run.
fonte
Tente executar sua tarefa agendada assim:
O
start /b
deve iniciar o aplicativo sem criar uma nova janela.Se isso não funcionar, você poderá criar um script AutoIt independente que oculte a janela taskeng.exe. Os scripts AutoIt podem ser compilados em um .exe.
O .exe seria a primeira linha do seu arquivo mybackup.bat. O código AutoIt ficaria assim:
fonte
Experimente o 4trayMinimizer . Você pode definir aplicativos ocultos por padrão.
fonte
A maneira mais simples de ocultar um aplicativo iniciado a partir do Agendador de Tarefas é configurá-lo para "Executar se o usuário estiver conectado ou não". Essa configuração pode ser encontrada na guia Geral das propriedades da tarefa agendada.
fonte
Aqui está o script SyncToy que eu uso. Observe as várias aspas no local do arquivo:
fonte
Aparentemente, você instalou o SQLyog MySQL GUI , que agendou a execução do SQLyog Job Agent . Parece que é um aplicativo de console que não tenta se esconder.
Você deve procurar no Agendador de tarefas uma tarefa referente ao SQLyog e corrigir sua entrada. Se for uma chamada de cmd, tente adicionar
/b
à lista de parâmetros. Se for apenas uma chamada para um executável, você poderá corrigi-lo tendo em vista esta resposta minha .Se você tiver problemas para localizar essa entrada, use autoruns para descobrir como o SQLyog é iniciado. Você também pode usar o regedit para procurar todas as menções ao SQLyog ou qualquer que seja o nome do diretório de instalação.
É claro que você também pode desinstalar a GUI do SQLyog MySQL, se não precisar.
Se você não instalou o SQLyog MySQL GUI, seu computador poderá estar infectado. Você pode usar o Process Monitor para verificar quando o pop-up aparece, para ver se é o taskeng.exe do system32 ou um dos Semelhantes do Taskeng.exe .
fonte
Eu estava tendo o problema exato usando o SQLyog depois de fazer algumas pesquisas. Corrigi-o criando um arquivo chamado
invisible.vbs
e inserindo este código:Do que criar um Agendador de Tarefas para executar o
invisible.vbs
arquivo e pronto!fonte