Вопрос или проблема
У меня есть довольно простой пакетный скрипт, который я хотел бы выполнить с помощью макроса на моей шикарной игровой клавиатуре. Однако SteelSeries Engine поддерживает только открытие .exe файла с помощью кнопок макроса. Есть ли способ преобразовать скрипт в простой исполняемый файл?
Да, на самом деле. Это не красиво, но это чисто (ничего чистить после этого не нужно) и это на самом деле встроено в вашу систему!
В вашей папке C:\Windows\System32\
есть файл под названием iexpress.exe
.
- Щелкните правой кнопкой мыши и выберите
Запуск от имени администратора
. - Создайте новый SED и выберите “Извлечь файлы и выполнить команду установки.”
- Добавьте нужный скрипт и убедитесь, что на следующем экране вы указываете программу установки как
cmd /c [ваш_скрипт.bat]
, где [ваш_скрипт.bat] – это файл скрипта, который вы хотите выполнить. Если вы этого не сделаете, Windows попытается использовать Command.com (старую версию командной строки), которая давно не использовалась. - Выберите предпочтения (возможно, вам нужно будет выбрать “Хранить файлы с длинными именами внутри пакета), укажите путь вывода (к .exe файлу, который вы хотите создать), и выберите “Без перезагрузки”.
- Нажмите далее, и у вас будет ваш .exe!
Примечание: этот файл на самом деле действует только как оболочка для вашего скрипта, и сам скрипт фактически выполняется во временной папке, создаваемой при выполнении (и удаляется после этого), поэтому убедитесь, что вы не используете относительные пути.
Вот 2 бесплатные программы, которые я настоятельно рекомендую для создания EXE из пакетных файлов
Обе программы имеют простой интерфейс.
Bat To Exe Converter
также поддерживает команды CLI (\?
флаг для помощи). Основной пример из документации:
Bat_To_Exe_Converter.exe -bat mybatfile.bat -save myprogram.exe -icon myicon
Если программное обеспечение вашей клавиатуры поддерживает передачу аргументов в исполняемый файл (что не исключено), вам не нужно.
cmd.exe /c <путь к пакетному файлу>
это запустит пакетный файл и даст вам действительный исполняемый файл для названия в программном обеспечении клавиатуры. Никакое преобразование не требуется, значит, вы всегда можете легко вносить изменения в свой .bat без необходимости в дополнительных шагах.
Я нашел эту статью, которая показывает, как преобразовать .bat в .exe файл с помощью пакетного скрипта:
@ECHO OFF
ECHO Создать EXE из BAT
ECHO Написано: Джейсон Фолкнер
ECHO SysadminGeek.com
ECHO.
ECHO.
REM Использование:
REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...]
REM
REM Обязательные параметры:
REM BatFileToConvert
REM Исходный пакетный файл, который необходимо использовать для получения выходного файла Exe.
REM
REM Необязательные параметры:
REM IncludeFile
REM Дополнительные файлы для включения в файл Exe.
REM Вы можете включить внешние инструменты, используемые пакетным файлом, чтобы они были доступны на исполняемой машине.
SETLOCAL
REM Конфигурация (без кавычек):
SET PathTo7Zip=
REM ---- Не изменяйте ничего ниже этой строки ----
SET OutputFile="%~n1.exe"
SET SourceFiles="%TEMP%MakeEXE_files.txt"
SET Config="%TEMP%MakeEXE_config.txt"
SET Source7ZFile="%Temp%MakeEXE.7z"
REM Удалить существующие файлы
IF EXIST %OutputFile% DEL %OutputFile%
REM Создать архив источника
ECHO "%~dpnx1" > %SourceFiles%
:AddInclude
IF {%2}=={} GOTO EndInclude
ECHO "%~dpnx2" >> %SourceFiles%
SHIFT /2
GOTO AddInclude
:EndInclude
"%PathTo7Zip%7za.exe" a %Source7ZFile% @%SourceFiles%
REM Создать конфигурационный файл
ECHO ;!@Install@!UTF-8! > %Config%
ECHO RunProgram="%~nx1" >> %Config%
ECHO ;!@InstallEnd@! >> %Config%
REM Создать EXE
COPY /B "%PathTo7Zip%7zsd.sfx" + %Config% + %Source7ZFile% %OutputFile%
REM Очистка
IF EXIST %SourceFiles% DEL %SourceFiles%
IF EXIST %Config% DEL %Config%
IF EXIST %Source7ZFile% DEL %Source7ZFile%
ENDLOCAL
Важные загрузки:
Разные версии Windows оказывают разное воздействие на одни и те же команды пакетного файла, и некоторые команды ограничены некоторыми системами Windows, например, findstr
и shutdown
.
Кстати, CMD в Win 10 не позволяет вносить изменения в SETLOCAL
на командной строке. Это нормально для пакетных файлов.
Смотрите эту ссылку для различных команд для перезагрузки разных версий Windows:
https://www.computerhope.com/issues/ch000321.htm
Таким образом, если вы скомпилируете скрипт на Win 98 и запустите на Win 8.1, вы получите неожиданные результаты или скрипты могут даже не работать.
Смотрите список команд здесь:
https://www.ionos.com/digitalguide/server/know-how/windows-cmd-commands/
По этой причине для каждой версии Windows потребуется другой компилятор, предпочтительно такой, который будет выдавать двоичный код (общий), который можно запускать на как можно большем количестве процессоров с одинаковыми наборами инструкций. Обходной путь, предлагаемый большинством программ, заключается в том, чтобы обернуть скрипт в файл exe, который развернётся и выполнит скрипт при открытии/запуске, например, Bat_To_Exe_Converter, Bat2Exe, BatchCompiler или Winzip:
https://support.winzip.com/hc/en-us/articles/115011794948-What-is-a-Self-Extracting-Zip-File-
Чтобы решить проблему портативности, виртуальные машины стали более популярными, и поэтому возросло количество Java и связанных скриптов.
Тем не менее, это всё ещё будет интерпретируемый код и не такой быстрый, как скомпилированный код. Даже байт-код (промежуточный код) из виртуальных машин всё равно необходимо компилировать, даже если это (JIT):
https://aboullaite.me/understanding-jit-compiler-just-in-time-compiler/
Кратко говоря, вы можете получить файл exe, который будет содержать скрипт, который будет интерпретирован командным процессором, но это не будет нативный исполняемый файл, что означает, что он не сможет работать без хоста от операционной системы Windows.
Это простой способ преобразовать .bat или .cmd файл в .exe.
У меня были проблемы с запуском пакетных файлов, поэтому я решил переименовать файл в .cmd и посмотреть, сработает ли он. Я добавил необходимую “setlocal EnableDelayedExpansion” в начало нового .cmd файла, но он выдал ошибку “привилегий”.
У меня есть копии многочисленных программ, которые конвертируют BAT в EXE, но большинство требуют нескольких входных данных и опций для генерации EXE файла. Для чего-то простого я хотел способ преобразовать простой BAT в EXE без необходимости выбирать множество опций и конфигураций.
Я провел небольшое исследование и нашел старую утилиту 7zip, которая предоставила чистый, простой и быстрый метод преобразования простого .bat или .cmd файла в EXE. Эта старая, устаревшая и неподдерживаемая утилита называется “7z SFX CREATOR”. Я обнаружил, что утилита требует всего ТРЕХ файлов, и два из устаревших файлов программы 7zip, которые она включает (7z.dll и 7zG.exe), могут быть легко обновлены до последних версий 7zip.
Эта небольшая утилита создает хорошие EXE файлы из .bat или .cmd и требует всего ТРЕХ опций: исходный файл, целевой файл и тип вывода: установщик (запустить файл) или архив (не запускать файл).
Поскольку EXE файлы автоматически запускаются с привилегиями – созданный мной EXE работал идеально.
Чисто, просто, без усложнений и эффективно. Вот что я хотел от утилиты BAT в EXE.
Простой инструмент https://github.com/x1y9/ExWrapper
Особенности ExWrapper:
-
Поддерживает два режима: встраивание bat или вызов внешних программ, что более гибко.
-
Очень легкий, ExWrapper весит менее 50k, а создаваемый exe весит менее 10k.
-
Настройка значка и возможность отображения консоли.
Ответ или решение
Как конвертировать пакетный скрипт Windows в .exe
Если у вас есть пакетный скрипт, который вы хотите выполнить с использованием макро-кнопок на игровом клавиатуре, но программное обеспечение вашей клавиатуры поддерживает только .exe файлы, существует несколько способов преобразования вашего скрипта в исполняемый файл. В этой статье мы рассмотрим несколько методов, используя встроенные инструменты Windows и сторонние программы.
1. Использование iExpress
Одним из простых способов конвертации .bat файла в .exe является использование встроенной утилиты iExpress в Windows. Вот шаги, которые вам нужно выполнять:
-
Запуск iExpress:
- Перейдите в папку
C:\Windows\System32\
и найдите файлiexpress.exe
. - Щелкните правой кнопкой мыши на нем и выберите «Запуск от имени администратора».
- Перейдите в папку
-
Создание SED:
- Выберите опцию «Создать новый SED» и выберите «Извлечь файлы и запустить команду установки».
-
Добавление вашего скрипта:
- Добавьте файл скрипта .bat. Убедитесь, что в следующем окне в поле команд установки вы указываете
cmd /c [ваш_скрипт.bat]
, чтобы использовать правильный интерпретатор команд.
- Добавьте файл скрипта .bat. Убедитесь, что в следующем окне в поле команд установки вы указываете
-
Настройка параметров:
- Выберите предпочтения (возможно, вам потребуется включить «Хранить файлы с длинным именем внутри пакета»), укажите путь для вывода (место сохранения .exe файла) и выберите опцию «Нет перезагрузки».
-
Завершение:
- Продолжайте нажимать «Далее», пока не получите ваш .exe файл.
Примечание: Этот файл служит лишь оберткой для вашего скрипта, который будет выполняться в временной папке. Поэтому избегайте использования относительных путей в вашем скрипте.
2. Использование сторонних программ
Если вы ищете более удобный графический интерфейс для конвертации, существует несколько бесплатных программ, которые могут помочь:
- Bat To Exe Converter: Это приложение поддерживает командную строку, позволяет легко конвертировать .bat в .exe и настроить иконки для вашего исполняемого файла.
- Bat 2 Exe: Простая в использовании программа с поддержкой функциональности drag-and-drop.
Эти программы предоставляют функционал, позволяющий легко создавать .exe файлы из .bat, с возможностью предварительной настройки.
3. Альтернативный метод с использованием командной строки
Если ваше программное обеспечение для клавиатуры поддерживает передачу аргументов нашему исполняемому файлу, вы можете просто использовать следующую команду без необходимости конвертирования:
cmd.exe /c <путь_к_вашему_скрипту.bat>
Этот метод позволяет вам запускать ваш пакетный файл напрямую из командной строки, сохраняя возможность редактирования скрипта без необходимости повторного создания .exe файла.
4. Программа MakeExeFromBat
Еще один подход к созданию .exe файлов из .bat заключается в использовании скрипта MakeExeFromBat:
@ECHO OFF
ECHO Создание EXE из BAT
SETLOCAL
SET OutputFile="%~n1.exe"
REM Удаление существующих файлов
IF EXIST %OutputFile% DEL %OutputFile%
REM Создание EXE
COPY /B "%PathTo7Zip%7zsd.sfx" + %Config% + %Source7ZFile% %OutputFile%
ENDLOCAL
Этот скрипт требует установки утилиты 7-Zip для работы и позволяет создавать исполняемые файлы без значительных усилий.
Заключение
Следуя представленным методам, вы сможете без труда конвертировать свои пакетные скрипты в исполняемые файлы .exe. Если вы ищете простой и быстрый способ, iExpress является надежным решением, в то время как сторонние программы предлагают более сложный графический интерфейс. Не забывайте проверять совместимость команд для разных версий Windows, чтобы избежать неожиданных ошибок при выполнении ваших скриптов.