簡體   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