2017-02-13 42 views
1

我在CMD窗口中執行了此命令並且它可以工作。我現在需要在2015年的VC++程序代碼中運行它,但我無法得到它。 我讀過處理這個的各種職位,但他們主要是字符串文字,我有變數。我認爲這是拋開雙引號。如果有更好/更安全的方法,我不必使用_wsystem。在C++中運行CMD行使用變量(不是字符串文字)作爲參數

更新:

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窗口,它的工作原理。
任何想法?

回答

0

您在致電_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部分引號內不,只是路徑的文件(包含空格,因此需要引號)。

另請注意,沒有任何引號的倍數,只有單個雙引號。

相關問題