30Aug
Quando você consegue, os arquivos em lote e os arquivos executáveis funcionam da mesma forma. Ambos são simplesmente um conjunto de instruções e lógica para a execução do Windows. Então, por que você quer converter um arquivo em lotes para um executável se eles basicamente funcionam da mesma forma? Aqui estão alguns motivos: portabilidade
- - você pode incluir ferramentas adicionais em seu arquivo EXE de que depende o arquivo em lotes. Proteção
- - um EXE fornece proteção para seu script de origem para garantir que ele não seja modificado inadvertidamente. Conveniência
- - Os arquivos executáveis podem ser fixados no Menu de Início do Windows e / ou na Barra de tarefas do Windows 7.
Com o script abaixo, você pode facilmente criar seu próprio arquivo executável a partir de um arquivo em lotes, completo e com ferramentas embutidas necessárias.
Configuração
Este script aproveita um SFX 7-Zip avançado( SelF eXtractor) para agrupar e executar o arquivo em lotes com todas as ferramentas incluídas. Então, você precisará baixar( links fornecidos no final) e extrai-los para um único diretório.
Depois de ter tudo baixado, defina a variável 'PathTo7Zip' no script para o local onde esses arquivos foram baixados.
O Script
@ECHO OFF ECHO Faça EXE De BAT ECHO Escrito por: Jason Faulkner ECHO SysadminGeek.com ECHO.ECO.Uso REM: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...] REM REM Parâmetros Necessários: REM BatFileToConvert REM Arquivo de lote de origem para usar para produzir o arquivo Exe de saída. REM REM Parâmetros opcionais: REM IncludeFile REM Arquivos adicionais para incluir no arquivo Exe. REM Você pode incluir ferramentas externas usadas pelo arquivo em lotes para que estejam disponíveis na máquina executante. Configuração do SETLOCAL REM( sem aspas necessárias): SET PathTo7Zip = REM ---- Não modifique nada abaixo desta linha ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SETConfig = "% TEMP% MakeEXE_config.txt" SET Source7ZFile = "% Temp% MakeEXE.7z" REM Remover arquivos existentes SE EXISTAR% OutputFile% DEL% OutputFile% REM Criar arquivo de origem ECHO "% ~ dpnx1" & gt;% SourceFiles%: AddInclude IF{ % 2} =={ } GOTO EndInclude ECHO "% ~ dpnx2" & gt; & gt;% SourceFiles% SHIFT / 2 GOTO AdicionarIncluir: EndInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Criar arquivo de configuração ECHO;! @ Install @! UTF-8!& gt;% Config% ECHO RunProgram = "% ~ nx1" & gt; & gt;% Config% ECHO;! @ InstallEnd @!& gt; & gt;% Config% REM Build EXE COPY / B "% PathTo7Zip% 7zsd.sfx" +% Config% +% Source7ZFile%% OutputFile% REM Limpar IF EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config% IFEXIST% Source7ZFile% DEL% Source7ZFile% ENDLOCALConclusão
É importante notar que, embora o arquivo resultante seja exatamente o mesmo que o arquivo BAT de origem, este não é um verdadeiro lote para a conversão executável. O arquivo resultante é um EXE, no entanto, destina-se a ser usado para instaladores auto-extraíveis. Quando você executa o arquivo EXE resultante, o processo é algo como isto:
- O conteúdo do arquivo EXE é extraído para o diretório temporário.
- O arquivo de configuração gerado pelo script é lido.
- O arquivo em lotes contido no arquivo EXE é executado em uma nova janela de comando.
- Uma vez concluído, os arquivos temporários são removidos.
No Windows Vista e nos novos sistemas operacionais, você pode ver a seguinte caixa de mensagem após o script ser executado. Depois de selecionar 'Este programa instalado corretamente', a caixa de mensagem não será exibida no futuro para este arquivo.
Como o arquivo EXE é iniciado em uma nova janela, a maneira típica de registrar a saída( usando o '& gt;' char) não funcionará como esperado. Para registrar a saída, você precisaria lidar com isso nativamente no seu script de origem.
Apesar desses inconvenientes menores, ser capaz de converter um arquivo em lotes para um executável pode realmente ser útil.
Links
Download Faça o EXE do Script BAT do Sysadmin Geek
Faça o download da Ferramenta de Linha de Comando 7-Zip
Faça o download do 7-Zip Advanced 7zSD SFX