Estou procurando uma maneira de executar um arquivo em lotes (.bat) sem nada visível para o usuário (sem janela, sem nome da barra de tarefas, .etc ..).
Eu não quero usar algum programa para fazer isso, estou procurando algo mais limpo. Encontrei uma solução que usa VBScript, mas também não gosto muito de usar o VBS.
windows
command-line
batch-file
Moayad Mardini
fonte
fonte
Respostas:
Solução 1:
Salve esta linha de texto como arquivo
invisible.vbs
:Para executar qualquer programa ou arquivo em lote invisivelmente, use-o assim:
Para também poder transmitir / retransmitir uma lista de argumentos, use apenas duas aspas duplas
Exemplo:
Invisible.vbs "Kill.vbs ME.exe"
Solução 2:
Use uma ferramenta de linha de comando para iniciar silenciosamente um processo: Silencioso , hidecon ou hideexec .
fonte
&
significa concatenar cadeias. As cadeias são colocadas entre aspas duplas ("
). Aspas duplas consecutivas (""
) dentro dos delimitadores de cadeia de caracteres significam aspas duplas literais ("
). Portanto, quatro aspas duplas (""""
) seriam uma string literal de um caractere, aspas duplas ("
). Coloque tudo junto e"""" & WScript.Arguments(0) & """"
se tornará"<argument>"
, onde<argument>
está o primeiro argumento da linha de comando passado para o script.wscript.exe "C:\Wherever\invisible.vbs" ...
interior?Para ocultar arquivos em lotes ou arquivos de comando ou qualquer arquivo ... Use o
IExpress.exe
utilitário interno do Windows XP para criar um arquivo .exe do arquivo em lotes. Ao usar,IExpress
verifique a opção executar oculto e marque todas as caixas sobre não mostrar nada. Depois de criar o seu .exe, coloque-o na pasta de comando de execução que você escolher e você nunca o verá aparecer.fonte
use Cmdow é um utilitário de linha de comando do Win32 para NT4 / 2000 / XP / 2003 que permite que as janelas sejam listadas, movidas, redimensionadas, renomeadas, ocultas / não-ocultas, desabilitadas / habilitadas, minimizadas, maximizadas, restauradas, ativadas / inativadas, fechadas, eliminadas e excluídas. Mais.
Execute um arquivo em lotes oculto passando os parâmetros: -
fonte
Se o seu Arquivo em lote pode caber em uma linha e em tantos caracteres, basta usar um atalho clicando com o botão direito do mouse dentro de uma pasta colocada em um diretório aleatório e pular o restante do assistente e, por último, clicar com o botão direito do mouse no atalho recém-criado e Clique em Propriedades e, no destino, insira o que você normalmente colocaria em um arquivo bat. E Bobs seu tio!
Prós:
Contras:
fonte
Execute o script por meio de um trabalho at sem torná-lo interativo:
Outra solução, se você não se importa em instalar algo como Python, pode simplesmente criar um script e executá-lo
pythonw
(a versão vinculada para operações da GUI). Como você não está usando nenhuma API gráfica, a janela não será exibida. Basta usar chamadas paraos.system()
e ele imitará um script em lote, pois é o mesmo que digitar as strings na linha de comando.Exemplo:
fonte
Você pode executá-lo minimizado facilmente.
fonte
Usando o Windows7, você pode usar o painel de controle "Tarefa agendada" para agendar um arquivo em lotes para execução invisível em segundo plano com permissões especificadas e até mesmo como a conta "SISTEMA". Veja a captura de tela abaixo:
Além disso, embora com poucos recursos, você também pode criar uma tarefa de script em lote invisível como esta na linha de comando usando o comando "AT.exe" sem a opção '/ Interactive'.
fonte
Eu não gosto da solução VBScript.
Faça o download e copie o nircmd.exe para sua
%systemroot%\system32
pasta e adicione este comando à primeira linha do seu lote:ou torne seu título de lote personalizado primeiro com o
title
comando para evitar ocultar todas ascmd
janelas, assim:fonte
Parece que alguém fez uma lista das 7-8 maneiras de executar o 'silencioso':
fonte
Você também pode criar um script AutoHotkey :
fonte
De outra maneira, a partir do C / C ++, é usar a função CreateProcess com o sinalizador CREATE_NO_WINDOW. Tem muita energia extra não mostrada aqui. Este é apenas o mínimo necessário para substituir system () ou a família _spawn ().
fonte
O excelente Bat To Exe Converter converterá seu arquivo
.bat
ou.cmd
em um.exe
arquivo.Ele tem uma interface simples. Você pode optar por não ter uma janela do console selecionando a opção "Aplicativo invisível". Além disso, permite atribuir um ícone, compactar arquivos associados e várias outras opções.
Aqui está uma captura de tela da janela principal da interface:
Observe que esta imagem está desatualizada. Ele mostra a versão 2.4.8 e, a partir de setembro de 2018, o site oferece a versão 3.0.10.0 (última atualização em 23/03/2018).
Atenção: o site www.f2ko.de possui um link para o site
coinhive.com
, amplamente identificado como malware .fonte
Fiz isso com sucesso com o nircmd desta maneira:
nircmd.exe win hide ititle "cmd.exe"
Agora você terá um arquivo .exe que, depois de clicar nele e instalá-lo, seu arquivo .bat será totalmente oculto.
fonte
fonte
'cmdow' is not recognized as an internal or external command, operable program or batch file.
Você não precisa fazer nenhum especial.
Se você estiver executando os arquivos em lotes de um serviço do Windows, eles deverão estar ocultos por padrão, a menos que você ative a opção "Permitir que o serviço interaja com a área de trabalho" no serviço.
fonte
Crie seu script em lote com sua lógica e comandos em lote e, em seguida, crie um novo arquivo com
.VBS
extensão, use a lógica abaixo (exemplo que forneci abaixo) e basta conectar o caminho completo ao seu arquivo.CMD
ou.BAT
com osPING -t <IPAddress>
comandos, etc. para ele executa o lote de maneira oculta, sem mostrar a janela de comando quando é executado.Onde a lógica no exemplo abaixo especifica a
C:\Folder\BatchFileName.cmd
alteração que aponta para o script em lote com seus comandos que você está executando manualmente, etc. agora.Salve o
.VBS
arquivo e programe-o comTask Scheduler
Problemas ao agendar uma tarefa no windows7 para executar em um agendamento indefinido para suas necessidades.Caso contrário, basta clicar duas vezes no
.VBS
arquivo para executar oPING
comando infinito que você coloca no arquivo em lotes para o qual você aponta.NOTA: Eu acredito que este é onde eu tenho essa lógica de script a partir mas funciona de forma confiável para a mesma finalidade que precisa aqui, que é o de assegurar a janela de comando estiver oculto quando um arquivo de lote é executado Servidor Fonte Fault
EXEMPLO VBS SCRIPT EXECUTAR JANELA DE LOTE DE COMANDO DA LINHA DE COMANDO
fonte
Aqui eu compilei todas as maneiras que eu conheço para iniciar um processo oculto com lote sem ferramentas externas. Com scripts prontos para usar (alguns deles bastante ricos em opções) e todos eles formam a linha de comando. O PID é retornado. As ferramentas usadas são IEXPRESS, SCHTASKS, WScript.Shell, Win32_Process e JScript.Net
fonte
Apesar de eu já ter respondido isso, aqui está outra abordagem. A diferença é que o script em lote pode se auto-ocultar durante a execução. Você precisará de dois scripts adicionais - windowMode.bat e getCMDPid.bat (ambos contêm
.net
código). Aqui como então pode ser usado:fonte
Eu tive o mesmo problema, mas descobri:
Shell("filehere" & "parametersforbatchfilehere", vbHidden)
fonte
Comecei a tentar descobrir isso e nunca realmente consegui. Foi o mais perto que cheguei:
fonte
Eu precisava ocultar a janela para um arquivo em lotes chamado de um menu de contexto do explorer e também adicionar aspas no parâmetro. Nenhuma das respostas funcionou para mim, então estou adicionando minha própria solução.
Eu tinha isso no registro "comando" para um menu de contexto do Explorer:
Então, para substituí-lo, tive que criar um vbs como este:
Salve em um local como
C:\mypath\myscript.vbs
e chame-o assim no registro:Observe que o caminho .bat não pode ter espaços, então substitua-o pelo nome do arquivo 8.3. Por exemplo
C:\Program Files\myprogram.bat
, deve ser referenciado comoC:\Progra~1\myprogram.bat
. Para ver o nome do arquivo 8.3, usedir /x
fonte
Eu criei o RunApp para fazer esse trabalho e também usá-lo no meu ambiente de produção. Espero que ajude.
A configuração como abaixo:
arquivo: config.arg
E inicie
runapp.exe
.fonte
Isso funciona para o Windows 8 (possivelmente outros)
clique em aplicar
Clique no atalho e ele será executado, mas você não o verá :)
fonte