繁体   English   中英

使用C ++运行命令行

[英]Run a command line with c++

我已经阅读了几篇有关在c ++中运行命令行的文章,但是它们都没有满足我的要求:当我使用dllfile时,没有在外部应用程序中显示控制台。

我的问题:我想使用从数据库中挑选文件的过程。 例如:要获取文件XYZ.xyz并将其复制到目录MyDirXYZ,我将使用命令行“ MyDataGenerator XYZ.xyz C:\\ MyDirXYZ”。

我使用Visual Studio让我们通过以下示例来阐明问题,我试图在C ++中使用“ mkdir”创建目录,而不使用CreateDirectory:

第一种方法:

std::string lDirectory("c:\\MyDummyDir")
std::string lCmd("mkdir " + lDirectory);
system((lCmd).c_str());

它将起作用,但是当我在Excel上使用dllfile运行控制台时, 它将显示控制台

第二种方法(convertToRightFormat()将字符转换为TChar)

    std::string lDirectory("c:\\MyDummyDir")
    std::string lCmd("mkdir " + lDirectory);
    BOOL _status = TRUE;
    DWORD _reply, _code;
    STARTUPINFO _si = { sizeof(_si) };
    PROCESS_INFORMATION _pi;
    TCHAR *_cmd = NULL;
   _cmd=convertToRightFormat(lCmd.c_str())
   _status &= CreateProcess(NULL, _cmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &_si, &_pi);

该方法不起作用(甚至不创建文件夹),并且显然对进程“ MyDataGenerator”也不起作用。

我试图使用可执行文件MKDIR.EXE并将其放在命令行中。 在这种情况下,它可以工作,但对于MyDataGenerator仍然不工作。

是否有通用方法可以使所有命令行正常工作,而不显示控制台?

谢谢。

#include <Windows.h> // FreeConsole, system

int main(int argc, char* argv[])
{   
    system("mkdir newdirectoryname");
    FreeConsole();
}

但是,这将导致cmd突然弹出。 之后关闭。

如果那是不可接受的,只需将Windows子系统而不是控制台作为目标,并确保不要绘制窗口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM