2017-11-25 67 views
0

我的意圖是運行Windows .EXE。爲了測試,首先我嘗試一些簡單的Windows命令。但似乎execFile只執行Linux命令。例如,如果我說要執行「DIR」,它將執行。但是如果我執行「CD」,它不會。然後,如果我執行「pwd」的工作。node.js中的execFile不執行Windows命令

我已經閱讀了有關execFile的文檔,但沒有解決這個問題。這裏是我的代碼片段:

var user_input = req.body.name; 
var command_array = user_input.split(/\s+/); 
var command = command_array.shift(); 
var params = command_array; 
console.log("Client Command: " + command); 
console.log("Client Arguments: " + params); 

var execFile = require('child_process').execFile 

// this launches the executable and returns immediately 
var child = execFile(command, params, 
    function (error, stdout, stderr) { 
     . . . 
     }); 

有人可以幫助我嗎?

這裏是輸出:

W:\Dropbox\DSI (His)\1830_GUI\EddyServer>npm run-script devstart 

> [email protected] devstart W:\Dropbox\DSI (His)\1830_GUI\EddyServer 
> nodemon ./bin/www 

[nodemon] 1.12.1 
[nodemon] to restart at any time, enter `rs` 
[nodemon] watching: *.* 
[nodemon] starting `node ./bin/www` 
GET/200 586.609 ms - 882 
GET /stylesheets/style.css 304 2.358 ms - - 
GET /run/create 200 51.934 ms - 1135 
GET /stylesheets/style.css 304 1.538 ms - - 
Client Command: cd 
Client Arguments: 
Program execution failed. Error (if any): 

POST /run/create 200 78.827 ms - 37 
GET /run/create 200 46.997 ms - 1135 
Client Command: dir 
Client Arguments: 
Here is the complete output of the program: 
[ 'EddyServer\t\t app.js  node_modules\t public write.txt\nNew\\ Text\\ Document.txt bin\t  package-lock.json routes\nREADME.md\t\t controllers package.json\t views\n' ] 
POST /run/create 200 410.113 ms - 180 
GET /run/create 200 40.355 ms - 1135 
GET/304 68.436 ms - - 
GET /stylesheets/style.css 304 2.428 ms - - 
GET /run/create 304 41.589 ms - - 
GET /stylesheets/style.css 304 1.851 ms - - 
Client Command: pwd 
Client Arguments: 
Here is the complete output of the program: 
[ '/w/Dropbox/DSI (His)/1830_GUI/EddyServer\n' ] 
POST /run/create 200 300.082 ms - 46 
GET /run/create 200 40.383 ms - 1135 
Client Command: cd 
Client Arguments: 
Program execution failed. Error (if any): 

POST /run/create 200 11.053 ms - 37 
GET /run/create 200 26.313 ms - 1135 
Client Command: ls 
Client Arguments: 
Here is the complete output of the program: 
[ 'EddyServer\nNew Text Document.txt\nREADME.md\napp.js\nbin\ncontrollers\nnode_modules\npackage-lock.json\npackage.json\npublic\nroutes\nviews\nwrite.txt\n' ] 
POST /run/create 200 62.154 ms - 157 
GET /run/create 200 40.479 ms - 1135 
Client Command: ls 
Client Arguments: -la 
Here is the complete output of the program: 
[ 'total 213\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 07:39 .\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 08:45 ..\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 07:20 .git\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 07:20 EddyServer\n-rw-r--r-- 1 eddyq 197121  0 Nov 23 18:42 New Text Document.txt\n-rw-r--r-- 1 eddyq 197121 999 Nov 6 16:47 README.md\n-rw-r--r-- 1 eddyq 197121 1638 Nov 6 16:47 app.js\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 07:20 bin\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 07:20 controllers\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 08:48 node_modules\n-rw-r--r-- 1 eddyq 197121 76014 Nov 6 16:50 package-lock.json\n-rw-r--r-- 1 eddyq 197121 499 Nov 6 16:50 package.json\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 07:39 public\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 07:39 routes\ndrwxr-xr-x 1 eddyq 197121  0 Nov 24 07:39 views\n-rw-r--r-- 1 eddyq 197121 15 Nov 23 19:25 write.txt\n' ] 
POST /run/create 200 223.792 ms - 901 
GET /run/create 200 26.539 ms - 1135 

回答

2

這是因爲execFile旨在執行文件,像你這樣的EXE,這是不打開外殼。如果你想執行一個像cd這樣的命令,你應該使用exec函數。 pwd作品爲你和cd沒有可能是因爲有一個pwd文件,您的PATH的一個文件夾(什麼能讓你在cmdpwd,窗戶本身並不支持pwd命令)
您可以閱讀進一步here

+0

完美, 謝謝。無論如何,我應該嘗試一個.EXE,因爲那是我的目標。 – Eddy