Pagina inicial » como » Posso executar um arquivo de lote do Windows sem um prompt de comando visível?

    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ão começar necessário. Para Perl, você executaria wperl.exe ao invés de perl.exe. Para Python, é pythonw.exe ao invés de python.exe. A antiga distribuição win32 Ruby que eu baixei tem rubyw.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.