C语言中如何连续执行多条CMD命令

 意思是要保存上一条命令的状态。
比如说我在DOS分别下执行md 1 cd 1 md 2 这3条命令后会创建一个“1”文件夹,同时在“1”里面创建一个“2”文件夹。
但是如果我在C中执行system("md 1");system("cd 1");system("md 2");后,它会在它会在当前目录下同时生成一个“1”文件夹和一个“2”文件夹。也就
是说每执行一条语句后它又回到了初始状态。请问有什么好的解决办法。

还有一个问题:C中如何判断哪个盘为U盘。
二楼的第一个问题是对的。但我不是需要在1里面创建一个2. 我是想知道C中如何连续执行多条DOS命令。

你用system()调用,那是多进程的,同时执行。
你要想挨个执行,可以等待前一条命令执行结束返回后,再执行下一条命令。

参考下列C 或C++ 代码:

bool ConsoleCompiler(char * ch)
{
    // 建立批处理文件
    std::ofstream fout( "CBStudy.cmd" );
    if ('v'==ch[0]) {
        fout << "@echo off\nset PATH=" << CBS_vcbin << ";%PATH%\nset INCLUDE=" <<CBS_include
             <<"\nset LIB=" << CBS_lib <<"\ncolor a\n@echo 欢迎使用命令行VC2010编译器中文版  你可以使用TAB自动补全\ncl\ncd \\mycpp\n" ;
    }
    if ('g'==ch[0]) {
        fout << "@echo off\nset PATH=" << CBS_gccbin << ";%PATH%\ncolor a\n@echo 欢迎使用命令行 GCC 编译器中文版  你可以使用TAB自动补全\ng++ -v\ncd \\mycpp\n" ;
    }
    fout.close();
    // 执行批处理文件
    char szCommandLine[] = "cmd /k CBStudy.cmd";
    STARTUPINFO si = { sizeof(si) };
    PROCESS_INFORMATION pi;
    si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效
    si.wShowWindow = TRUE;   // 此成员设为TRUE的话则显示新建进程的主窗口,
    // 为FALSE的话则不显示
    BOOL bRet = ::CreateProcess (
                    NULL,   // 不在此指定可执行文件的文件名
                    szCommandLine,  // 命令行参数
                    NULL,   // 默认进程安全性
                    NULL,   // 默认线程安全性
                    FALSE,   // 指定当前进程内的句柄不可以被子进程继承
                    CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口
                    NULL,   // 使用本进程的环境变量
                    NULL,   // 使用本进程的驱动器和目录
                    &si,
                    &pi);
    return true;
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lst0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值