我已经在CMD窗口中执行了此命令,并且可以正常工作。我现在需要在2015 VC ++程序代码中运行它,但我无法获取它。
我已经阅读了有关此内容的各种文章,但它们主要针对字符串文字,并且我有变量。我认为这消除了双引号。如果有更好/更安全的方法,我不必使用_wsystem。

更新:

std::wstringstream wss;
wss <<  std::wstring(L"\"") << CPathUtil::get_exe_fullpath() << std::wstring(L"\"") << L" /q /a " << std::wstring(L"\"") + cp.c_str() + std::wstring(L"\"");
const auto command = wss.str();
const auto result = _wsystem(command.c_str());


它仍然不能从VC ++应用程序运行。
command = "C:\Users\Valued Customer\Documents\Visual Studio 2015\Projects\svn_3dg_wc\x64\Debug\MyAppD.exe" /q /a "C:\Users\Valued Customer\Documents\Visual Studio 2015\Projects\svn_3dg_wc\Samples\New folder\C - Copy (2).abc"
如果我从调试器复制值并粘贴到CMD窗口中,则它可以工作。
有任何想法吗?

最佳答案

在调用_wsystem之前在最后一步中添加的引号将整个字符串转换为单个命令。需要用引号将命令中以空格分隔的“单词”分组。

param的内容应类似于

"C:\Users\Valued Customer\Documents\Visual Studio 2015\Projects\svn_wc\x64\Debug\MyApp.exe" /q /a "C:\Users\Valued Customer\Documents\Visual Studio 2015\Projects\svn_3dg_wc\Samples\New folder\C - Copy (2).abc"


请注意,/q /a部分不在引号内,而仅是文件路径(包含空格,因此需要引号)。

另请注意,在任何地方都没有多个引号,只有一个双引号。

关于c++ - 使用变量(而非字符串文字)作为参数在C++中运行CMD行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42204731/

10-11 22:40
查看更多