【问题标题】:how can we use a batch file in c++?我们如何在 C++ 中使用批处理文件?
【发布时间】:2009-09-25 15:59:07
【问题描述】:

我的目的:我想制作一个可以使用 DOS 命令的 c++ 程序。

选项:我可以制作一个批处理文件并将 DOS 命令放入其中。 但是我不知道如何在 c++ 程序中使用这个文件?

【问题讨论】:

    标签: c++ batch-file


    【解决方案1】:
    system("mybatchfile.bat");
    

    system() reference

    【讨论】:

    • 第一次尝试。谢谢!
    【解决方案2】:
    //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";
        }
    }
    

    【讨论】:

      【解决方案3】:

      有两个选项可用于从 C/C++ 在 Windows 上运行批处理文件。

      首先,您可以使用 system(或 _wsystem 用于宽字符)。

      "系统函数将命令传递给命令解释器,命令解释器将字符串作为操作系统命令执行。system 是指定位命令解释器文件的 COMSPEC 和 PATH 环境变量(Windows 中名为 CMD.EXE 的文件2000 年及以后)。”

      或者你可以直接使用CreateProcess

      注意,对于批处理文件:

      “要运行批处理文件,您必须启动命令解释器;将 lpApplicationName 设置为 cmd.exe 并将 lpCommandLine 设置为以下参数:/c 加上批处理文件的名称。”

      【讨论】:

      • ::CreateProcess(L"cmd.exe" 真的有效吗?我收到错误 2,ERROR_FILE_NOT_FOUND。但是,在同一个电话中,如果我用L"c:\\Windows\\System32\\cmd.exe" 替换,那么它会奇迹般地工作......
      【解决方案4】:

      您可能想查看systemShellExecuteCreateProcess 调用,以确定在这种情况下哪个合适。

      【讨论】:

        【解决方案5】:

        将 dos 命令放在批处理脚本中似乎是个好主意。那么你当然可以使用system 命令。

        但如果您的 C++ 程序还需要您正在运行的批处理脚本的标准输出,您应该尝试:_popen_wpopen

        欲了解更多信息和代码示例,请访问MSDN

        【讨论】:

          【解决方案6】:

          您可以在c++程序中使用系统调用来执行C++程序从用户那里得到的所有命令。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-08-29
            • 1970-01-01
            • 1970-01-01
            • 2020-06-05
            • 2016-11-29
            • 2017-03-28
            相关资源
            最近更新 更多