2011-07-23 25 views
2

我在我的utils文件夾中有find.exe程序。這不起作用:使用Windows中的C++中的system(),爲什麼需要兩個引號來調用另一個目錄中的程序?

system("\"utils/find.exe\""); 

我得到的是

'utils' is not recognized as an internal or external command, 
operable program or batch file. 

但是,由於某種原因,這個工程:

system("\"\"utils/find.exe\"\""); 

呼應單引號字符

system("echo \"utils/find.exe\""); 

輸出

"utils/find.exe" 

...爲什麼我需要兩個引號?

+0

嘗試看看如果使用'^'轉義它會發生什麼可能很有趣。 – Mehrdad

回答

3

我假設你在windows上,因爲你試圖執行一個.exe文件。所以,不要寫下「utils/find.exe」,而應該寫下「utils \ find.exe」。 Windows上的分隔字符是'\',因此可能會將「utils」視爲命令,因爲忽略「/」。

+0

這是我想到的。但是,它將是''utils \\ find.exe「'。 –

+0

是的,在C字符串上它應該是\\。你有沒有測試過它,看看它是否可以不用引號? – 2011-07-24 00:12:00

+0

是的,問題是用C++標記的。不,我沒有嘗試過這種或那種方式。我會尋找這個問題的作者。 –

1

或許system()正在將您的命令行傳遞給shell,例如, cmd.exe,哪還需要引用?

0

即使您可以在Windows中使用/和\作爲目錄分隔符,命令處理器也會嘗試解釋以/開頭的任何內容。試試這個:

system("\"utils\\find.exe\""); 
相關問題