node.js中的execFile不执行Windows命令

我的意图是运行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

回答:

这是因为execFile旨在执行文件,像你这样的EXE,这是不打开外壳。如果你想执行一个像cd这样的命令,你应该使用exec函数。 pwd作品为你和cd没有可能是因为有一个pwd文件,您的PATH的一个文件夹(什么能让你在cmdpwd,窗户本身并不支持pwd命令)
您可以阅读进一步here

以上是 node.js中的execFile不执行Windows命令 的全部内容, 来源链接: utcz.com/qa/257162.html

回到顶部