30Aug

Convertir una secuencia de comandos por lotes( BAT) en un archivo ejecutable( EXE)

click fraud protection

Cuando llegue a eso, los archivos por lotes y los archivos ejecutables funcionan de la misma manera. Ambos son simplemente un conjunto de instrucciones y lógica para la ejecución de Windows. Entonces, ¿por qué quieres convertir un archivo por lotes a un ejecutable si esencialmente funcionan igual? Estas son algunas razones: Portabilidad

  • : puede incluir herramientas adicionales en su archivo EXE de las que depende el archivo por lotes. Protección
  • : un EXE proporciona protección para su script de origen para garantizar que no se modifique inadvertidamente. Comodidad de
  • : los archivos ejecutables pueden fijarse en el menú de inicio de Windows y / o la barra de tareas de Windows 7.

Con la secuencia de comandos a continuación, puede construir fácilmente su propio archivo ejecutable desde un archivo por lotes, completar con las herramientas integradas requeridas.

Configuration

Este script aprovecha un SFX avanzado de 7-Zip( SelF eXtractor) para agrupar y ejecutar el archivo por lotes con cualquier herramienta incluida. Por lo tanto, deberá descargar( enlaces proporcionados al final) estos y extraerlos a un único directorio.

instagram viewer

Una vez que haya descargado todo, configure la variable 'PathTo7Zip' en el script en la ubicación donde se descargaron estos archivos.

El script

@ECHO OFF ECHO Hace EXE de BAT ECHO Escrito por: Jason Faulkner ECHO SysadminGeek.com ECHO.ECO.Uso de REM: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...] REM REM Parámetros necesarios: REM BatFileToConvert REM Archivo de proceso por lotes de origen que se utilizará para generar el archivo Exe de salida. REM REM Parámetros opcionales: REM IncludeFile REM Archivos adicionales para incluir en el archivo Exe. REM Puede incluir herramientas externas utilizadas por el archivo por lotes para que estén disponibles en la máquina ejecutora. SETLOCAL REM Configuración( sin comillas): SET PathTo7Zip = REM ---- No modifique nada debajo de esta línea ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SETConfig = "% TEMP% MakeEXE_config.txt" SET Source7ZFile = "% Temp% MakeEXE.7z" REM Eliminar archivos existentes IF EXIST% OutputFile% DEL% OutputFile% REM Crear archivo de origen ECHO "% ~ dpnx1" & gt;% SourceFiles%: AddInclude IF{ % 2} =={ } GOTO EndInclude ECHO "% ~ dpnx2" & gt; & gt;% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Build config file 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 Limpieza IF EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config% IFEXIST% Source7ZFile% DEL% Source7ZFile% ENDLOCAL

Conclusión

Es importante tener en cuenta que si bien el archivo resultante se ejecuta exactamente igual que el archivo BAT de origen, no se trata de una conversión de lote verdadero a ejecutable. El archivo resultante es un EXE, sin embargo, está destinado a ser utilizado por instaladores autoextraíbles. Cuando ejecuta el archivo EXE resultante, el proceso es más o menos así:

  1. El contenido del archivo EXE se extrae al directorio temporal.
  2. El archivo de configuración generado por el script se lee.
  3. El archivo de proceso por lotes contenido en el archivo EXE se ejecuta en una nueva ventana de comando.
  4. Una vez finalizado, los archivos temporales se eliminan.

En Windows Vista y en los sistemas operativos nuevos, puede ver el siguiente cuadro de mensaje después de ejecutar el script. Después de seleccionar 'Este programa se instaló correctamente', el cuadro de mensaje no se mostrará en el futuro para este archivo.

Debido a que el archivo EXE se inicia en una nueva ventana, la forma típica de registrar la salida( usando el carácter '& gt;') no funcionará como se espera. Para registrar la salida, necesitaría manejar esto de forma nativa en su script fuente.

A pesar de estos inconvenientes menores, ser capaz de convertir un archivo por lotes a un ejecutable realmente puede ser útil.

Enlaces

Descargar Make EXE from BAT Script de Sysadmin Geek

Descargar 7-Zip Command Line Tool

Descargar 7-Zip Advanced 7zSD SFX