
У меня есть довольно простой пакетный скрипт, который я хотел бы выполнить с помощью макроса на моей крутой игровой клавиатуре. Однако SteelSeries Engine поддерживает только открытие .exe-файла с помощью кнопок макроса. Есть ли способ преобразовать скрипт в простой исполняемый файл?
решение1
Да, на самом деле. Это некрасиво, но это чисто (нечего потом убирать) и это фактически встроено в вашу систему!
В вашей C:\Windows\System32\
папке есть файл с именем iexpress.exe
.
- Щелкните правой кнопкой мыши и
Run as administrator
. - Создайте новый SED и выберите «Извлечь файлы и выполнить команду установки».
- Добавьте нужный вам скрипт и убедитесь, что на следующем экране вы указали программу установки,
cmd /c [your_script.bat]
где [your_script.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
решение3
Если программное обеспечение вашей клавиатуры поддерживает передачу аргументов исполняемому файлу (что вполне вероятно), то вам это делать не нужно.
cmd.exe /c <path to batchfile>
запустит пакетный файл и предоставит вам действительный исполняемый файл для имени программного обеспечения клавиатуры. Отсутствие необходимости в преобразовании означает, что вы всегда можете легко вносить изменения в свой bat без дополнительных шагов.
решение4
Различные версии 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 понадобится свой компилятор, желательно такой, который выдаст двоичный код (generic), который можно будет запустить на максимально возможном количестве микросхем ЦП с теми же наборами инструкций. Обходной путь, предлагаемый большинством программ, заключается в том, чтобы обернуть скрипт в exe-файл, который распакует и выполнит скрипт при открытии/запуске, например, Bat_To_Exe_Converter, Bat2Exe, BatchCompiler или Winzip: https://support.winzip.com/hc/en-us/articles/115011794948-Что-такое-самораспаковывающийся-Zip-файл-
Для решения проблемы переносимости все большую популярность приобрели виртуальные машины, что привело к появлению Java и связанных с ней скриптов.
Однако это все еще будет интерпретируемый код, и не такой быстрый, как скомпилированный код. Даже байт-код (промежуточный код) из виртуальных машин все еще нужно компилировать, даже если это (JIT): https://aboullaite.me/understanding-jit-compiler-just-in-time-compiler/
Короче говоря, вы можете получить exe-файл, содержащий скрипт, который будет интерпретироваться командным процессором, но он не будет собственным исполняемым файлом, то есть он не будет запускаться без хоста операционной системы Windows.