3

My intention is to run a Windows .EXE. To test, first I'm trying some simple Windows commands. But it seems that the execFile is only executing Linux commands. For example, if I say to execute "DIR" it will execute. But if I execute "CD" it won't. Then if I execute "pwd" that works.

I have read the document regarding execFile but that does not address this problem. Here is a snip of my code:

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) {
        . . .
        });

Can someone help me with this?

Here is the output:

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

1 Answer 1

4

This is because execFile intended to execute files, like yours EXE, this is not open a shell. if you want to execute a commands like cd you should use exec function. pwd works for you and cd not probably because there is a pwd file on one of your PATH folders (what enables you to write pwd on cmd, windows not support pwd command by itself)
You can read further here

Sign up to request clarification or add additional context in comments.

1 Comment

Perfect, thanks. I should have tried a .EXE since that was my aim anyway.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.