
battoexeconverter-20100503.zip
Ievads
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.
Problēma
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.
Šķīdums
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) Noklikšķiniet uz pogas “…” ao lado do campo Batchfile e indique seu script .bat que será convertido
(2) Marque a opção “Ghost application”
(3) Noklikšķiniet uz pogas “Compile”
Note que será criado no mesmo diretório do seu .bat um outro arquivo de mesmo nome, Tomēr, 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. Tie ir:
(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). turklāt, 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.
Apdares, criei um script para copiar os arquivos do servidor para a máquina cliente de um só vez. Tātad, 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) uz (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) uz (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. Faktiski, 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, Apsveicu!
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
UPS, 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
liels paldies. Você me ajudou muito.
Es cenšos palaist Jboss standalone.bat WildFy ar šo programmu, bet kad man palaist to man šī kļūda.
labdien, šķiet, ka problēma jūsu skriptu un nevis ar BatToExeConverter. Pārbaudiet, vai ir pareizs ceļš, ka jūs izmantojat savu nūju: “(C):\UsersuserDownloadswildfly-10.1.0.Finalwildfly-10.1.0.Finalbinstandalone.exe”. Ou tente achar o erro pelo Google.
Man izdevās atrisināt, Paldies draugs.
Putz.. 7 divu gadu laikā, un jūs joprojām saglabājot Ģente…
MTO Paldies, mani paglāba!!!
Mr Lee, jūs nezināt, cik tas tiešām viegli tagad manā dzīvē. liels paldies!
Apsveicu, palīdzēja man daudz.