Posso executar um arquivo de lote do Windows sem um prompt de comando visível?
Os arquivos em lote são uma maneira prática de executar uma série de comandos no Windows, mas existe alguma maneira de executá-los invisivelmente em segundo plano? Leia mais descubra como.
A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..
A questão
Leitor SuperUser Jake quer rodar um arquivo BAT de forma invisível, ele escreve:
Eu instalei uma jóia rubi chamada Redcar, que é lançada a partir da linha de comando. Quando ele é executado, ele rouba o shell até que ele seja encerrado, portanto, preciso criar uma nova janela do shell para continuar fazendo o trabalho de linha de comando. O shell que estou usando é o shell GITBash do MySysGit.
Eu encontrei um arquivo Redcar.bat que serve para lançar Redcar como um atalho, eu presumo, mas eu não quero a janela de prompt de comando extra para abrir sempre que eu iniciar o arquivo BAT.
Como faço para apenas executar o BAT sem ver o prompt?
Existe uma solução para o desejo rápido de Jake??
As respostas
Afrazier, colaborador do SuperUser, responde com uma combinação de boas e más notícias:
Você não pode - executar um arquivo de lote com o Prompt de Comando embutido vai manter uma janela aberta até o arquivo de lote sair.
O que você posso É tomar medidas para garantir que o arquivo de lote saia o mais rápido possível. Se possível, modifique o arquivo de lote para executar qualquer programa com o
começar
comando. Por padrão,começar
retorna imediatamente sem esperar que o programa saia, portanto o arquivo em lote continuará a ser executado e, presumivelmente, sairá imediatamente. Junte isso ao modificar seu atalho para executar o arquivo de lote minimizado, e você só verá o flash da barra de tarefas sem sequer ver uma janela na tela.Uma ressalva para isso é que, se você estiver executando um programa em modo de console, que são muitos intérpretes de script, o arquivo em lote aguardará a saída do programa e o uso
começar
irá gerar uma nova janela de console. O que você precisa fazer neste caso é executar a versão do interpretador baseada no Windows em vez da baseada no console - nãocomeçar
necessário. Para Perl, você executariawperl.exe
ao invés deperl.exe
. Para Python, épythonw.exe
ao invés depython.exe
. A antiga distribuição win32 Ruby que eu baixei temrubyw.exe
, que deveria fazer a mesma coisa.Uma possibilidade final é usar uma ferramenta de terceiros para executar o prompt de comando com uma janela oculta. Eu já ouvi falar dessas coisas, mas nunca tive um uso para elas, então eu não sei de nada em particular para te apontar.
Os leitores também apontaram para outro tópico do SuperUser que destaca como você pode usar um script do Visual Basic para ir além da minimização da visibilidade e ocultar completamente o prompt do CMD. Nesse segmento, Harry MC explica:
Solução 1:
Salve esta linha de texto como arquivo
invisible.vbs
:CreateObject (“Wscript.Shell”). Execute “” ”” & WScript.Arguments (0) & “” ””, 0, False
Para executar qualquer programa ou arquivo em lote de forma invisível, use-o da seguinte maneira:
wscript.exe “C: \ Wherever \ invisible.vbs” “C: \ Outro Outro Lugar \ MyBatchFile.bat”
Para também ser capaz de passar / retransmitir uma lista de argumentos, use apenas duas aspas duplas
CreateObject (“Wscript.Shell”). Execute “” & WScript.Arguments (0) & “”, 0, False
exemplo: Invisible.vbs “Kill.vbs ME.exe”
Solução 2:
Use uma ferramenta de linha de comando para iniciar silenciosamente um processo: Silencioso.
Empregar qualquer uma das soluções acima, com base no seu nível de conforto usando VBS e ferramentas de terceiros ou não, reduzirá, no mínimo, a visibilidade da janela do CMD ou a remoção definitiva.
Tem algo a acrescentar à explicação? Soe fora nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.