2013-07-11 58 views
3

我想用系統()和文件路徑將被傳遞給函數所以它看起來是這樣執行洗澡文件:函數來執行批處理文件C++

void executeBatch(char* BatchFile){ 
    system(BatchFile); 
} 

現在的問題是,即通過在不會有逃生的路徑報價忽略例如空間,用戶將輸入:

"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat" 

怎樣逃生引號添加到傳遞的路徑?

所以我essentually改變:

"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat" 

"\"C:\\Users\\500543\\Documents\\Batch File Project\\Testing.bat\"" 
+0

不要採取非const'字符*'如果你不打算改變它。 – chris

+0

只需使用'std :: string'使其快速輕鬆,但我建議使用旨在打開文件的API,而不是執行任意命令。 – chris

回答

2

我想,你希望這樣的事情:

void executeBatch(char* BatchFile){ 
string cmd(BatchFile) 
string expandCmd = string(""\\") + cmd + string("\\""); 
system(expandCmd.c_str()); 
} 
+0

是的,但這不起作用。其中之一是強調'「」\「+ cmd +」\「」;'並且\是一個無法識別的標記。並且它強調'expandCmd'並且說它不適合,因爲它不是'const char *' – user1334858

+0

我同意,對不起,我不在電腦前。編輯我的答案!希望它能夠工作,有很多方法可以追加字符串。 – alexbuisson

+0

哦,算了一下,我只是把第一個問題改成'expandCmd =''''+ cmd +''';' – user1334858