Как я могу конвертировать пакетный скрипт Windows в .exe?

23

У меня есть довольно простой пакетный скрипт, который я хотел бы выполнить, используя макрос на своей игровой клавиатуре. Однако SteelSeries Engine поддерживает открытие только файла .exe с помощью кнопок макросов. Есть ли способ конвертировать скрипт в простой исполняемый файл?

Чейз Сэндманн
источник
2
Баш или Пакет? Они довольно разные, несмотря на то, что они очень похожи по назначению.
Фрэнк Томас
1
Вы также можете использовать AutoIt или AutoHotKey. Они более мощные, чем Batch, и оба включают компиляторы для генерации автономных .exes.
Даниэль Б
Вот как это можно сделать без внешних инструментов
npocmaka

Ответы:

21

Да собственно Это не красиво, но чисто (нечего потом чистить) и встроено в вашу систему!

В вашей C:\Windows\System32\папке есть файл с именем iexpress.exe.

  • Щелкните правой кнопкой мыши Run as administrator.
  • Создайте новый SED и выберите «Извлечь файлы и запустить команду установки».
  • Добавьте cmd /c [your_script.bat]нужный сценарий и убедитесь, что на следующем экране вы установите программу установки, где [your_script.bat] - это файл сценария, который вы хотите выполнить. Если вы этого не сделаете, Windows попытается использовать Command.com (старая версия командной строки), которая долгое время не использовалась.
  • Выберите настройки (вам может потребоваться выбрать «Хранить файлы, используя длинное имя файла внутри пакета»), задать путь вывода (к файлу .exe, который вы хотите создать) и выберите «Без перезапуска».
  • Нажмите Далее, и вы должны иметь свой .exe!

Просто обратите внимание, этот файл фактически действует только как оболочка для вашего сценария, а сам сценарий фактически выполняется во временной папке, созданной при выполнении (и удаленной впоследствии), поэтому убедитесь, что вы не используете относительные пути.

Чейз Сэндманн
источник
2
К сожалению, наше предприятие AV заметило, что полученный исполняемый файл был «Самоизвлекающимся кабинетом», и отметило его как вредоносную деятельность.
kmote
@ тоже со мной. они спросили меня об этом однажды, потому что это, вероятно, появилось в отчете, и я объяснил, что это такое, на этот раз они просто удалили его, не спрашивая.
Ноль
13

Вот 2 бесплатные программы, которые я настоятельно рекомендую для создания EXE-файлов из пакетных файлов

1 - Bat To Exe Converter

2 - Bat 2 Exe

Вы можете использовать обе программы с простым графическим интерфейсом.

Bat To Exe Converterподдерживает также команды CLI ( \?флаг для справки). Базовый пример из документации:

Bat_To_Exe_Converter.exe -bat mybatfile.bat -save myprogram.exe -icon myicon
rammi
источник
Bat2Execпозволяет добавить манифест администратора, который мне понравился.
каламбур
2
Не могли бы вы также дать краткое изложение того, как выполнить задачу с этими программами? В ответе никогда не бывает лишней детализации :)
Бен Н
Расширенный конвертер Bat 2 Exe является условно-бесплатным
djibe
Имеет 2 - Bat 2 Exe CLI поддержка? Я не вижу никакой информации по этому вопросу.
Ste
5

Если ваша клавиатура поддерживает передачу аргументов исполняемому файлу (что не исключено), вам не нужно этого делать.

cmd.exe /c <path to batchfile>

запустит пакетный файл и выдаст вам допустимый исполняемый файл для программного обеспечения клавиатуры. Нет необходимости в конвертации, что означает, что вы всегда можете легко внести изменения в свою летучую мышь без дополнительных действий.

Syberdoor
источник
4

Я нашел эту статью, которая показывает вам, как конвертировать .bat в .exe файл, используя пакетный сценарий:

@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

Важные загрузки:

Stackcraft_noob
источник
Можно ли сделать эхо-файл EXE в той же командной строке, из которой он был запущен? (В отличие от открытия нового окна)
Stevoisiak