Electron:运行带参数的 shell 命令

Posted

技术标签:

【中文标题】Electron:运行带参数的 shell 命令【英文标题】:Electron: run shell commands with arguments 【发布时间】:2019-08-15 04:04:39 【问题描述】:

我正在构建一个电子应用程序,

我可以使用 shell api (https://electronjs.org/docs/api/shell) 轻松运行 shell 命令

此命令运行完美,例如:

shell.openItem("D:\test.bat");

这个没有

shell.openItem("D:\test.bat argument1");

如何运行带参数的电子外壳命令?

【问题讨论】:

【参考方案1】:

shell.openItem 不是为此而设计的。 使用来自child_process 核心模块的NodeJS 的spawn 函数。

let spawn = require("child_process").spawn;

let bat = spawn("cmd.exe", [
    "/c",          // Argument for cmd.exe to carry out the specified script
    "D:\test.bat", // Path to your file
    "argument1",   // First argument
    "argumentN"    // n-th argument
]);

bat.stdout.on("data", (data) => 
    // Handle data...
);

bat.stderr.on("data", (err) => 
    // Handle error...
);

bat.on("exit", (code) => 
    // Handle exit
);

【讨论】:

它需要安装节点还是只需要 npm 依赖? 我的意思是,“child_process”只是电子 js 的一部分,即:我不需要在客户端桌面上安装 nodejs 吗? @SlimaneDeb child_process 是 NodeJS 的一部分,而不是电子。它是一个核心模块。见here。 @SlimaneDeb,澄清 NullDev 的声明,电子默认将 nodejs 捆绑在其二进制文件中。因此,您应该可以使用所有核心模块。

以上是关于Electron:运行带参数的 shell 命令的主要内容,如果未能解决你的问题,请参考以下文章

python 如何调用带参数的shell脚本

实现一个shell程序

如何在 shell 脚本中将带引号的参数添加到带引号的命令中? [复制]

spark启动问题,发现任务都是在localhost下面运行的,原来启动spark-shell的时候需要带主节点的参数

参数传递:shell脚本调用一个带参数的python函数

使用 nohup 运行带参数的 shell 脚本