我的目的:我想创建一个可以使用DOS命令的c ++程序。
选项:我可以创建一个批处理文件并将其置于DOS命令中。 但我不知道如何在c ++程序中使用这个文件?
答案 0 :(得分:14)
有两个选项可用于在Windows上从C / C ++运行批处理文件。
首先,您可以使用system(或_wsystem用于宽字符)。
“系统函数将命令传递给命令解释器,命令解释器将字符串作为操作系统命令执行。系统是指定位命令解释器文件的COMSPEC和PATH环境变量(Windows中名为CMD.EXE的文件) 2000年及以后)。“
或者您可以直接使用CreateProcess。
请注意,对于批处理文件:
“要运行批处理文件,必须启动命令解释程序;将lpApplicationName设置为cmd.exe并将lpCommandLine设置为以下参数:/ c加上批处理文件的名称。”
答案 1 :(得分:9)
system("mybatchfile.bat");
答案 2 :(得分:6)
您可能希望查看system
,ShellExecute
和CreateProcess
来电,以确定在此方案中哪一个适合。
答案 3 :(得分:6)
//example that makes and then calls a batch file
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
ofstream batch;
batch.open("mybatchfile.bat", ios::out);
batch <<"@echo OFF\n";
batch <<":START\n";
batch <<"dir C:\n";
batch <<"myc++file 2 >nul\n";
batch <<"goto :eof\n";
batch.close();
if (argc == 2)
{
system("mybatchfiles.bat");
cout <<"Starting Batch File...\n";
}
}
答案 4 :(得分:1)
将dos命令放在批处理脚本中似乎是个好主意。然后你当然可以使用system
命令。
但是如果你的C ++程序还需要运行批处理脚本的stdout,你应该尝试:_popen
或_wpopen
。
有关更多信息和代码示例,请访问MSDN。
答案 5 :(得分:0)
您可以在c ++程序中使用系统调用来执行C ++程序从用户那里获得的所有命令。