¿Cómo puedo convertir un script por lotes de Windows en un archivo .exe?

23

Tengo un script por lotes bastante simple que me gustaría ejecutar usando una macro en mi elegante teclado para juegos. Sin embargo, SteelSeries Engine solo admite la apertura de un archivo .exe con los botones de macro. ¿Hay alguna forma de convertir el script en un ejecutable simple?

Chase Sandmann
fuente
2
Bash o Batch? Son bastante diferentes, a pesar de ser tan similares en propósito.
Frank Thomas el
1
También puede usar AutoIt o AutoHotKey. Son más potentes que Batch y ambos incluyen compiladores para generar .exes independientes .
Daniel B
Así es como se puede hacer esto sin herramientas externas
npocmaka

Respuestas:

21

Si en realidad No es bonito, pero está limpio (no hay nada que limpiar después) y en realidad está integrado en su sistema.

En su C:\Windows\System32\carpeta, hay un archivo llamado iexpress.exe.

  • Haga clic derecho en él Run as administrator.
  • Cree un nuevo SED y seleccione "Extraer archivos y ejecutar un comando de instalación".
  • Agregue el script que desee y asegúrese de que en la siguiente pantalla, configure el programa de instalación cmd /c [your_script.bat]donde [your_script.bat] es el archivo de script que desea ejecutar. Si no hace esto, Windows intentará usar Command.com (la versión anterior de Símbolo del sistema) que no ha estado en uso durante bastante tiempo.
  • Seleccione las preferencias (es posible que deba seleccionar "Almacenar archivos usando el nombre de archivo largo dentro del paquete), establezca una ruta de salida (al archivo .exe que desea crear) y seleccione" Sin reinicio ".
  • Haga clic en siguiente y debería tener su .exe!

Solo una nota, este archivo en realidad solo actúa como un contenedor para su script, y el script en sí mismo se ejecuta en una carpeta temporal creada en la ejecución (y eliminada después), así que asegúrese de no usar ninguna ruta relativa.

Chase Sandmann
fuente
2
Desafortunadamente, nuestra empresa AV notó que el ejecutable resultante era un "Cabinet Self-Extractor" y lo marcó como actividad maliciosa.
kmote
@kmote yo también. me lo preguntaron una vez antes porque probablemente apareció en un informe y les expliqué qué es, esta vez simplemente lo eliminaron sin preguntar.
Cero
13

Aquí hay 2 programas gratuitos que recomiendo encarecidamente para crear EXE de archivos por lotes

1 - Convertidor de Bat a Exe

2 - Bat 2 Exe

Puede usar ambos programas con una GUI simple.

Bat To Exe Convertertambién admite comandos CLI ( \?marca de ayuda). Ejemplo básico de documentación:

Bat_To_Exe_Converter.exe -bat mybatfile.bat -save myprogram.exe -icon myicon
rammi
fuente
Bat2Execle permite agregar un manifiesto de administrador que me gustó.
juego de palabras el
2
¿Podría también dar un resumen rápido sobre cómo realizar la tarea con esos programas? Nunca está de más tener detalles adicionales en una respuesta :)
Ben N
El convertidor Advanced Bat 2 Exe es shareware
djibe
¿ 2 - Bat 2 Exe admite CLI? No puedo ver ninguna información sobre esto.
Ste
5

Si el software de su teclado admite el paso de argumentos al ejecutable (que no es improbable), no tiene que hacerlo.

cmd.exe /c <path to batchfile>

ejecutaría el archivo por lotes y le daría un ejecutable válido para nombrar el software del teclado. No se necesita conversión, lo que significa que siempre puede realizar cambios fácilmente en su bate sin necesidad de pasos adicionales.

Syberdoor
fuente
4

Encontré este artículo que le muestra cómo convertir un archivo .bat a .exe utilizando un scipt por lotes:

@ECHO OFF
ECHO Make EXE From BAT
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.

REM Usage:
REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...]
REM
REM Required Parameters:
REM  BatFileToConvert
REM      Source batch file to use to produce the output Exe file.
REM
REM Optional Parameters:
REM  IncludeFile
REM      Additional files to include in the Exe file.
REM      You can include external tools used by the batch file so they are available on the executing machine.

SETLOCAL

REM Configuration (no quotes needed):
SET PathTo7Zip=


REM ---- Do not modify anything below this line ----

SET OutputFile="%~n1.exe"
SET SourceFiles="%TEMP%MakeEXE_files.txt"
SET Config="%TEMP%MakeEXE_config.txt"
SET Source7ZFile="%Temp%MakeEXE.7z"

REM Remove existing files
IF EXIST %OutputFile% DEL %OutputFile%

REM Build source archive
ECHO "%~dpnx1" > %SourceFiles%
:AddInclude
IF {%2}=={} GOTO EndInclude
ECHO "%~dpnx2" >> %SourceFiles%
SHIFT /2
GOTO AddInclude
:EndInclude
"%PathTo7Zip%7za.exe" a %Source7ZFile% @%SourceFiles%

REM Build config file
ECHO ;!@Install@!UTF-8! > %Config%
ECHO RunProgram="%~nx1" >> %Config%
ECHO ;!@InstallEnd@! >> %Config%

REM Build EXE
COPY /B "%PathTo7Zip%7zsd.sfx" + %Config% + %Source7ZFile% %OutputFile%

REM Clean up
IF EXIST %SourceFiles% DEL %SourceFiles%
IF EXIST %Config% DEL %Config%
IF EXIST %Source7ZFile% DEL %Source7ZFile%

ENDLOCAL

Descargas importantes:

Stackcraft_noob
fuente
¿Es posible hacer que el EXE haga eco en la misma línea de comando desde la que se ejecutó? (En lugar de abrir una nueva ventana)
Stevoisiak