Есть ли готовое решение для запуска программы (назовем ее launcher.exe) с расширением .exe (расширение важно), которая ищет файл статической конфигурации, например, launcher.cfg, и запускает другую программу, указанную в файле конфигурации.

Или, возможно, launcher.exe , который запустит launcher.cmd или какой-то другой скрипт, который можно использовать для передачи управления вперед.

Другое объяснение требований, если это еще не достаточно ясно:

1. Пользователь или другая программа запускает program.exe
2. program.exe запускает program.cmd который является сценарием оболочки, выполняемым cmd.exe

Важно то, что launcher.exe - программа с расширением .exe и ей не нужны аргументы командной строки для запуска другого скрипта или программы с аргументами командной строки.

2 ответа2

1

Я не знаю ни одной готовой программы, которая делает это.

У меня было немного свободного времени, так что вот небольшая программа на C++.

#include <cstdlib>
#include <cstdio>
#include <cstring>

#define COMMAND_PRE "call "
#define COMMAND_POST ".bat"

using namespace std;

int main(int argc, char *argv[]) {
    char command[strlen(COMMAND_PRE) + strlen(argv[0]) + strlen(COMMAND_POST) + 1];

    strcpy(command, COMMAND_PRE);
    strcat(command, argv[0]);
    strcat(command, COMMAND_POST);

    printf("Running \"%s\"", command);
    system(command);

    system("pause");
}

Конечно, Нортон был достаточно хорош, чтобы назвать это высоким риском из-за system(command); строка, которая просто выполняет .bat файл. Как бы то ни было, я не могу быть обеспокоен попыткой найти антивирусный метод (а защита Нортона "SONAR" довольно часто срабатывает).

Назовите программу whatever.exe и она запустит файл whatever.exe.bat . Другими словами, он возьмет свое собственное имя файла (и путь), добавит .bat до конца и запустит его.

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

1

Я нашел альтернативное решение для этого, которое я думаю, не так хорошо, как ответ Боба.

Тем не менее, это рабочее решение, и я опубликую его для дальнейшего использования:

Файлы .cmd и .bat могут быть скомпилированы в файлы .exe (с некоторыми ограничениями) с помощью batch compiler находится по адресу sf.net/projects/batchcompiler.

Таким образом, можно написать командный файл

start anotherbatch.cmd /arg1 /arg2

И скомпилируйте это в batchfile.exe

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .