2015-08-28 54 views
0
var exec = require('child_process').exec 
var cmd = 'C:\\Users\\Johnny Cash\\Desktop\\executeme.exe' 

exec(cmd, function(e, stdout, stderr) { 
    console.log(e); 
    console.log(stdout); 
    console.log(stderr); 
}); 

「C:\用戶\約翰尼」不被識別爲內部或外部的命令節點的exec()不工作,因爲在URI名稱空間

這一定是這是有史以來最新的問題,但我如何在窗戶上用空格逃避這些路徑?它在空間中被切斷,我沒有做任何事情(事先進行單一或雙重轉義)似乎可以做到這一點。 exec()做了一些我不知道的格式嗎?

+0

@JohnnyHK嘿,這工作。將接受爲答案/ –

回答

4

exec對待在command參數字符串作爲參數分隔符的任何空間,所以你需要加倍引號的整個路徑有它所有的路徑處理,運行命令:

var cmd = '"C:\\Users\\Johnny Cash\\Desktop\\executeme.exe"' 

但它的可能更乾淨只是爲了使用execFile,因爲它的file參數始終被視爲文件路徑,並帶有單獨的args參數。那麼你應該可以省略雙引號換行。無論如何,execFile有點精簡,因爲它不執行像exec這樣的子shell。

+1

如果我需要將參數傳遞給另一個具有空格的長字符串「exec」,該怎麼辦? –

+1

@ dsp_099分別單獨引用參數或使用'execFile'並將參數傳遞到它自己的數組參數中。 – JohnnyHK

+0

wooooooooww .... –

0

您需要使用^(尖),以景觀從URI空間炭炭:

var cmd = 'C:\\Users\\Johnny^ Cash\\Desktop\\executeme.exe'