我无法使用以下代码的构建来解析可执行文件:
#include <iostream>
#include <fstream>
#include <string.h>
#include <windows.h>
using namespace std;
int main(int argc,char** argv)
{
if(argc==3)
{
if(strcmp(argv[1],"-i")==0)
{
string DueEXE, DueVER;
DueEXE = DueVER = "";
DueEXE += argv[2];
cout << endl << DueEXE;
DueVER += "\"" + DueEXE + "\" -ver > \"C:\\\\DueVER\"";
cout << endl << DueVER << endl << endl;
system(DueVER.c_str());
}
}
return 0;
}
先决条件:
1。 DueEXE 将文件位置保存到打印(在控制台中)的* .exe文件中与-ver或--ver一起使用时的版本
2。我使用的是Windows XP SP3
3。如果重要的话,我使用Code :: Blocks和MinGW32。
遇到问题:
当我使用 cmd 执行构建时,如下所示 -
1。 build.exe -i“D:\ OA 2 \ Due.exe”
2。 build.exe -i“D:/ OA 2 / Due.exe”,
D:/OA 2/Due.exe
D:/OA 2/Due.exe -ver > "C:\DueVER"
'D:/OA' is not recognized as an internal or external command,
operable program or batch file.
我知道我必须用引号解析3 rd 参数 此外,结果应该像 -
"D:/OA 2/Due.exe"
"D:/OA 2/Due.exe" -ver > "C:\DueVER"
整个 Due.exe 文件位置必须用引号括起来,但这不会发生。
代码中出了什么问题?
答案 0 :(得分:1)
哦!
我忘了用引号括起来的变量调用system()
函数。
用system(DueVER.c_str())
取代system(("\""+DueVER+"\"").c_str())
完成了我的工作。