解决方案是使用静态配置文件中指定的参数运行另一个程序吗?

解决方案是使用静态配置文件中指定的参数运行另一个程序吗?

是否有现成的解决方案来运行程序(我们称之为launcher.exe),.exe文件扩展名是 (扩展很重要) 查找静态配置文件,例如launcher.cfg,并启动配置文件中指定的另一个程序。

或者也许launcher.exe会执行launcher.cmd一些其他可用于传递控制权的脚本。

如果还不够清楚的话,请对要求进行另一种解释:

1.用户或其他程序启动program.exe
2. program.exelaunchesprogram.cmd是执行的 shell 脚本cmd.exe

重要的是,它launcher.exe是具有.exe文件扩展名的程序,它不需要任何命令行参数来启动另一个带有命令行参数的脚本或程序。

答案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到末尾,然后运行它。

你可以从上面的源代码自行编译。我还会提供已编译程序的下载链接这里,但使用时需自担风险——这里没有人对可能发生的情况负责

答案2

我已经找到了替代解决方案,但我认为它不如鲍勃的答案好。

但是,这是一个可行的解决方案,我会将其发布以供将来参考:

.cmd并且.bat文件可以编译为.exe文件(但有一些限制)batch compiler发现于sf.net/projects/batchcompiler

这样就可以编写批处理文件

start anotherbatch.cmd /arg1 /arg2

并将其编译为batchfile.exe

相关内容