
battoexeconverter-20100503.zip
Introdução
Batch ou arquivo de lote (também conhecidos por .bat) é um arquivo de computador utilizado para automatizar tarefas (Saiba mais…). Eu não pretendo discutir se usar .bat, VB, shell, java, Windows ou Linux é o melhor caminho. Não defendo tecnologias, mas as uso em meu favor, buscando o que elas tem de melhor a oferecer e isto pode variar de acordo com as necessidades ou ambiente que estou inserido.
Problema
Em fim, eu precisava de um .bat para mapear uma unidade de rede apontando para um diretório no servidor e também para rodar um script em .vbs que obtinha algumas informações de hardware das maquinas clientes. Mas tinha que ser transparente (background) para os usuários, pois se não, certamente eles fechariam a telinha do MS-DOS antes de completar o script.
Solução
Tentei alguns artifícios presentes na Internet, mas sem sucesso. O que realmente salvou a pátria foi o Bat To Exe Converter. O aplicativo permite converter .bat em .exe e ainda dá a opção “Ghost application” que é justamente quem possibilita fazer o executável rodar em segundo plano (background). Nem é necessário instalação!
Baixe, descompacte e execute o arquivo Bat_To_Exe_Converter.exe (Acima) e faça da seguinte forma:
(1) Clique no botão “…” ao lado do campo Batchfile e indique seu script .bat que será convertido
(2) Marque a opção “Ghost application”
(3) Clique no botão “Compile”
Note que será criado no mesmo diretório do seu .bat um outro arquivo de mesmo nome, porém, com extensão .exe. Tente executá-lo e verá que roda de forma transparente, sem qualquer janela visível.
Este Post poderia terminar por aqui que já teria cumprido seu objetivo. Mas vou estendê-lo mais um pouco detalhando os arquivos de script que utilizei, até mesmo para uma questão de futuras consultas.
Em resumo funciona assim: Num diretório do servidor coloquei alguns arquivos que em dado momento serão (uma única vez) copiados para a máquina cliente. São eles:
(1) rede.exe
(2) rede.reg
(3) scan.vbs
rede.exe nada mais é do que um arquivo rede.bat que compilei usando o Bat_To_Exe_Converter.exe mencionado neste Post. O servidor onde está este e outros arquivos funciona apenas de repositório, pois o objetivo é, posteriormente, copiar o “rede.exe” para a máquina cliente e criar uma chave no registro para que ele seja sempre executado ao iniciar o Windows. Como dito, este arquivo roda invisível ao usuário e tem a finalidade de mapear uma unidade de rede (t:) apontando para o diretório ” \\server\trabalho” (Área do usuário). Além disso, roda um script VB (scan.vbs) que obtem algumas informações do hardware.
rede.bat | Mapeia unidade de rede e executa .vbs
1 2 3 | net use t: /delete net use t: \\server\trabalho wscript \\server\aplicativos\scan.vbs |
rede.reg, ao ser executado com dois cliques, cria uma chave (Valor da sequência) no registro do windows que faz com que “rede.exe” seja executado toda vez que o Windows inicializa. Esta chave pode ser vista após criada acessando o Menu “Iniciar” > “Executar”, digitando “regedit” e seguindo o caminho: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
rede.reg | Cria chave no registro do Windows
1 2 3 | Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "rede"="C:\\rede.exe" |
scan.vbs é um script VB que captura algumas informações da hardware da máquina cliente. Utilizei este recurso pois precisava fazer um inventário das máquinas da rede a fim de obter alguns dados específicos (Não quis utilizar os softwares de inventários que existem na Internet). Não vou postar aqui o conteúdo do script “scan.vbs” pois é baseado no PCeX, que adaptei para meu uso a fim de gerar um sumário de hardware em XML. Maiores detalhes sobre PCeX, acesse:
Aproveito para deixar meu muito obrigado aos desenvolvedores do PCeX que gratuitamente disponibilizaram o código fonte.
Finalizando, criei um script para copiar os arquivos do servidor para a máquina cliente de um só vez. Então, tudo que eu tinha que fazer era ir na máquina cliente, acessar o compartilhamento no servidor e executar esse mini-instalador. A partir de então, toda vez que a máquina do cliente inicializava, o rede.exe (antigo .bat) rodava em background e cumpria a missão.
rede.install.bat| Instala solução nas máqunas clientes
1 2 3 4 5 6 7 8 9 | @echo off cls @echo INICIANDO... FOR /l %%a IN (%1,-1,1) do (ECHO 1 >NULL %%as&ping -n 2 -w 1 127.0.0.1>NUL) @echo. copy \\server\trabalho\aplicativos\rede.exe c:\rede.exe \\server\trabalho\aplicativos\rede.reg @echo FIM FOR /l %%a IN (%1,-1,1) do (ECHO 1 >NULL %%as&ping -n 2 -w 1 127.0.0.1>NUL) |
Só mais uma observação: Essa linha começando com “FOR” funciona apenas como uma pausa. Na verdade, foi a forma que encontrei de simular a função sleep (dormir) presente em várias linguagens de programação.
Até a próxima!
É possível executar um arquivo cm-dos.exe dentro de um servidor através de script? obs: o servidor permite isso.
Não entendi! Você quer executar um cmd.exe (command) através de um script? Executar simplesmente abrindo o ms-dos (cmd.exe) ou executando algum comando nele? Qual seu servidor? Falouuu…
Exelente programa muito bom mesmo agora faço os comandos em .bat e converto para .exe!
Boa dica!
Estou usando em meus arquivos cmd, conhece algum para java?
Tem como configurar um icone para o arquivo final .exe ?
Você pode colocar o arquivo uma pasta e ocultar o arquivo e criar um atalho e coloca-lo onde desejar com o ícone alterado.
è possibile che questo “compilatore” non aggiunga niente ai nostri batch?
Scusate ma presto attenzione alla sicurezza
Ciao, la tua preoccupazione è appropriato, ma che potrebbe dire qualcosa è circa lo sviluppatore: http://www.f2ko.de/
Muito boa dica, parabéns!
Me ajudou bastante.
Att
http://social.technet.microsoft.com/Forums/pt-BR/e6463015-b4e2-465b-9e83-4a1d797437db/executar-bat-em-segundo-plano?forum=scriptadminpt
Melhor opção para executar um .bat em background. #euachei
Opa, não testei, mas parece interessante… “melhor” é relativo, mas valeu!
Você não precisa usar esse FOR para ter uma pausa na execução do script. Se for WinXP use o comando SLEEP, mas se for Win7 use o comando TIMEOUT. #ficadica \o/
A dica é boa, ainda bem que na informática não existe solução, mas soluções… o ruim é que aparece uma contagem regressiva: “Waiting for 3 seconds, press a key to continue …”
Perfeito =D
muito bom este post é uma excelente ajuda. Parabens
Muito obrigado. Você me ajudou muito.
Estou tentando executar o standalone.bat do Jboss WildFy com este programa mas quando coloco ele pra rodar tenho esse erro.
Olá, parece ser um problema no seu script e não com o BatToExeConverter. Verifique se esse caminho que você usa no seu bat está correto: “C:\Users\user\Downloads\wildfly-10.1.0.Final\wildfly-10.1.0.Final\bin\standalone.exe”. Ou tente achar o erro pelo Google.
Já consegui resolver, obrigado amigo.
Putz.. 7 anos dpois e vc ainda salvando gent…
Mto obrigado, me salvou!!!
Senhor Lopes, não sabes o quanto facilitaste minha vida agora. Muito obrigado!
Parabéns, me ajudou muito.