Como posso converter um script em lote do Windows em um .exe?

23

Eu tenho um script em lote bastante simples que gostaria de executar usando uma macro no meu teclado de jogos sofisticado. No entanto, o SteelSeries Engine suporta apenas a abertura de um arquivo .exe com os botões de macro. Existe alguma maneira de converter o script em um simples executável?

Chase Sandmann
fonte
2
Bash ou Lote? Eles são bastante diferentes, apesar de serem tão similares em propósito.
Frank Thomas
1
Você também pode usar o AutoIt ou o AutoHotKey. Eles são mais poderosos que o Lote e ambos incluem compiladores para gerar .exes autônomos .
Daniel B
Veja como isso pode ser feito sem ferramentas externas
npocmaka

Respostas:

21

Sim, realmente. Não é bonito, mas é limpo (nada para limpar depois) e é realmente incorporado ao seu sistema!

Na sua C:\Windows\System32\pasta, há um arquivo chamado iexpress.exe.

  • Clique com o botão direito do mouse em um Run as administrator.
  • Crie um novo SED e selecione "Extrair arquivos e execute um comando de instalação".
  • Adicione o script desejado e certifique-se de que, na próxima tela, defina o programa de instalação para cmd /c [your_script.bat]onde [your_script.bat] seja o arquivo de script que você deseja executar. Se você não fizer isso, o Windows tentará usar o Command.com (a versão antiga do Prompt de Comando), que não está sendo usada há um bom tempo.
  • Selecione as preferências (talvez seja necessário selecionar "Armazenar arquivos usando o Nome do arquivo longo dentro do pacote), defina um caminho de saída (para o arquivo .exe que você deseja criar) e selecione" Sem reinicialização ".
  • Clique em Avançar e você deverá ter o seu .exe!

Apenas uma observação, esse arquivo realmente funciona apenas como um invólucro para o seu script, e o próprio script é realmente executado em uma pasta temporária criada na execução (e excluída posteriormente), portanto, não use nenhum caminho relativo.

Chase Sandmann
fonte
2
Infelizmente, nosso AV corporativo percebeu que o executável resultante era um "extrator automático de gabinete" e o sinalizou como atividade maliciosa.
kmote
@kmote me também. eles me perguntaram isso uma vez antes, porque provavelmente apareceu em um relatório e eu expliquei o que é, desta vez eles apenas o excluíram sem perguntar.
Zero
13

Aqui estão 2 programas gratuitos que eu recomendo para a criação de arquivos fora de lote do EXE

1 - Conversor Bat To Exe

2 - Bat 2 Exe

Você pode usar os dois programas com uma GUI simples.

Bat To Exe Convertertambém suporta comandos da CLI ( \?sinalize para obter ajuda). Exemplo básico da documentação:

Bat_To_Exe_Converter.exe -bat mybatfile.bat -save myprogram.exe -icon myicon
rammi
fonte
Bat2Execpermite adicionar manifesto de administrador que eu gostei.
pun
2
Você também pode dar um rápido resumo de como realizar a tarefa com esses programas? Nunca é demais ter detalhes extras em uma resposta :) #
Ben N
Advanced Bat 2 Exe converter é shareware
djibe 17/09/19
Faz 2 - Bat 2 Exe suporte CLI? Não consigo ver nenhuma informação sobre isso.
Ste
5

Se o seu software de teclado suportar a passagem de argumentos para o executável (o que não é improvável), você não precisará.

cmd.exe /c <path to batchfile>

executaria o arquivo em lotes e forneceria um executável válido para nomear o software do teclado. Nenhuma conversão necessária significa que você sempre pode fazer alterações facilmente em seu bastão sem a necessidade de etapas adicionais.

Syberdoor
fonte
4

Encontrei este artigo que mostra como converter um arquivo .bat em .exe usando uma verificação em lote:

@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

Downloads importantes:

Stackcraft_noob
fonte
É possível fazer o EXE eco para a mesma linha de comando a partir da qual foi executado? (Ao contrário de abrir uma nova janela)
Stevoisiak 14/10/1919