конвертировать пакетные файлы в exes - PullRequest
2 голосов
/ 09 августа 2009

Мне интересно, возможно ли конвертировать командные файлы в исполняемые файлы с использованием C ++?У меня есть много командных файлов здесь, и я хотел бы преобразовать их в исполняемые файлы (в основном, чтобы запутать код).Я понимаю, что есть сторонние инструменты, которые могут сделать это, но я думал, что это будет хорошей возможностью для проекта программирования.

Я не уверен, с чего начать.Мне нужно кодировать какой-то парсер или что-то?

Ответы [ 6 ]

5 голосов
/ 09 августа 2009

Вам не просто нужен анализатор, вам нужно написать компилятор, который принимает файлы .BAT или .CMD в качестве входных данных и выводит C ++ в качестве «машинного кода». Я бы классифицировал этот проект как «трудный для очень трудного» (в основном из-за странного синтаксиса и семантики языка ввода), но если вы хотите пойти на это, то окончательный вопрос SO о написании компилятора будет здесь .

3 голосов
/ 09 августа 2009

Создайте исполняемый файл, который хранит пакетный файл как ресурс. Затем при выполнении возьмите пакетный файл из ресурса, запишите его на диск и выполните. После этого удалите его.

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

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

1 голос
/ 09 августа 2009

Вы можете открыть командные файлы с помощью блокнота и копировать построчно, затем вставить его в C ++ .cpp файл, как это, и использовать системную функцию:

.cpp

int main()
{
   system("Your command here");
}

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

0 голосов
/ 13 декабря 2013

Ну, есть программа, которая называется Advanced BAT to EXE Converter (посмотрите на Google), которая делает ее проще (если бы я был на своем ноутбуке, то я знал бы точное имя).

0 голосов
/ 21 апреля 2012

Как сказал Алекс, самый простой способ скомпилировать командный файл - сохранить его в некоторой локальной области хранения в исполняемом файле, а во время выполнения - извлечь, выполнить и удалить его. Использование файла ресурса - хорошая идея, потому что тогда вы можете просто скомпилировать заглушку и просто скопировать ее и заменить содержимое ресурса всякий раз, когда вам нужен новый exe-файл. Хотя решение от Anon определенно правдоподобно, похоже, что это будет слишком много работы, чем на самом деле нужно в этой ситуации.

Во всяком случае, мне несколько месяцев назад стало скучно, и я написал что-то об этом, что можно найти здесь . В этом нет ничего особенного, но он должен показать вам, что вам нужно делать.

0 голосов
/ 09 августа 2009

Как насчет этого ? Я не уверен, что это сильно запутает, но, по крайней мере, вам не нужно писать собственный синтаксический анализатор, который может занять некоторое время:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...