程序啟動命令列中怎麼傳遞帶空格的引數

2021-05-25 10:47:04 字數 754 閱讀 3008

程序

啟動命令列中怎麼傳遞帶空格的引數

一般我們在乙個exe裡面啟動另外乙個exe使用 shellexecute 命令函式:

比如下面的**:

要啟動的exe位於d盤的根目錄下面,要傳遞的命令列引數為乙個路徑:

d:/config.ini 

那麼在myexe.exe裡面怎麼獲得傳遞過去的命令列引數呢,看下面的**:

那麼,我們從上面的**可以得出,命令列引數為argc-1個,都放在argv這個陣列中,其中 argv[0] 是程式本身的執行路徑,所以argc>=1 .

我們通過argv[1]就可以獲得第乙個命令列引數,比如上面的**,我們就獲得了傳遞過來的命令列引數為d:/config.ini   。

但是,當我改變傳遞的命令列引數的內容為d:/program files/config.ini的時候

我的myexe.exe程式對命令列引數的解析出問題了,解析的結果為:d:/program,而且argc=3,顯然,程式把我的乙個引數「d:/program files/config.ini」解析為兩個引數:

argv[1]="d:/program" ,  argv[2]="files/config.ini" 了。

這是個比較嚴重的bug ,那麼怎麼告訴系統我傳遞的是乙個帶有空格的引數,而不是多個引數呢?

解決方法

可以使用下面的**:

將要傳遞的引數用"/""  和 "/""  給包起來,然後傳遞給shellexecute就不會出現問題了。 

C 呼叫cmd命令列路徑中帶空格問題

打包winform程式,程式中本身有一處需要呼叫cmd.exe,打包安裝在c program files目錄下,然後呼叫cmd的地方,就彈出了c program不是內部或外部命令,也不是可執行的程式或批處理檔案的錯誤提示框,對比了一下未安裝和安裝之後的指定檔案路徑,發現安裝後的路徑中有空格,然後在網...

C 呼叫cmd命令列路徑中帶空格問題

今天打包winform程式,程式中本身有一處需要呼叫cmd.exe,打包安裝在c program files目錄下,然後呼叫cmd的地方,就彈出了c program不是內部或外部命令,也不是可執行的程式或批處理檔案的錯誤提示框,對比了一下未安裝和安裝之後的指定檔案路徑,發現安裝後的路徑中有空格,然後...

Windows中通過命令列顯示程序啟動路徑

按下鍵,開啟 執行 對話方塊,輸入 wmic 回車,開啟wmic命令提示符視窗,系統會自動安裝wmic管理器。安裝完成後,介面上將出現 wmic root cli 提示符,表明程式已在wmic互動模式下工作。在命令提示符下輸入 process 回車。可以看到每個程序的 啟動路徑。這對於判斷是否為木馬...