如何在JavaScript中执行shell命令

220
我想编写一个JavaScript函数,它可以执行系统shell命令(例如ls)并返回结果值。
我该如何实现这个功能?

5
您希望在客户端还是服务器上执行此命令? - Jan Hančič
8
为什么您选择了最不受欢迎的答案作为最佳答案?o.0 - André Levy
对于任何想在按钮点击时执行命令的人,可以在这里查看next.js的方式: https://dev59.com/vLb3oIgBc1ULPQZF8tfb - user1506104
16个回答

3
如果你正在使用npm,可以使用shelljs包。
安装方法:npm install [-g] shelljs
var shell = require('shelljs');
shell.ls('*.js').forEach(function (file) {
// do something
});

查看更多: https://www.npmjs.com/package/shelljs


2
在IE中,您可以这样做:
var shell = new ActiveXObject("WScript.Shell");
shell.run("cmd /c dir & pause");

1
ActiveXObject仅适用于IE浏览器。 - Inigo

2

关于这个话题的另一篇文章,提供了一个不错的jQuery / Ajax / PHP解决方案:

shell脚本和jQuery


问题指定了JavaScript。 - Inigo

1

使用nashorn,您可以编写以下类似的脚本:

$EXEC('find -type f');
var files = $OUT.split('\n');
files.forEach(...
...

并运行它:

jjs -scripting each_file.js

0
const fs = require('fs');

function ls(startPath) {
    fs.readdir(startPath, (err, entries) => {
        console.log(entries);
    })
}

ls('/home/<profile_name>/<folder_name>')

这里使用的startPath是参考debian发行版的。


0

Js 文件

var oShell = new ActiveXObject("Shell.Application");
oShell.ShellExecute("E:/F/Name.bat","","","Open","");

Bat文件

powershell -Command "& {ls | Out-File -FilePath `E:F/Name.txt}"`

使用Node运行JS文件,命令为node namefile.js

const fs = require('fs')

fs.readFile('E:F/Name.txt', (err, data) => {
if (err) throw err;

console.log(data.toString());
})

您也可以使用异步函数在一个解决方案中完成所有操作。但是需要注意,这样可能会存在安全问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接