[英]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.