本文概述
- 批量
- Electron
- 执行批处理文件
批量 【如何使用Electron Framework执行.bat文件,接收数据和错误】在本文中, 我们假设你对批处理有一定的了解, 但是你需要知道, 要将批处理中的信息发送到我们的Electron App, 你需要使用echo来输出要发送的文本。
所有通过echo打印的文本都将通过child_process的stdout.on(” data” )事件检索。
echo This text will be sent as Uint8Array for being processed later by your Electron App
REM Note that you can send 2 types of data (normal and error)REM To send normal data
echo Hello world 2>
&
1REM To send error data (but don't stop the execution)
echo This text should ouput an error 1>
&
2
要处理Electron的on(” exit” )事件并批量发送其他退出代码, 请使用以下行(根据你的需要更改数字):
EXIT /B 1
Electron 如前所述, 从stderr和stdout检索的数据将具有Uint8Array格式, 因此我们需要将Uint8Array转换为字符串Javascript(如果需要数组格式, 则不要对其进行转换)。要转换, 请使用以下行
var myReceivedData = http://www.srcmini.com/;
// This will be the Uint8Array Data
var strData = String.fromCharCode.apply(null, myReceivedData);
// The array is now human readable text
注意:上一个代码段适用于普通数据。如果你的数据量很大, 则可能需要更改数据的转换方式, 请在此处详细了解如何将Uint8Array转换为字符串。
现在我们已经了解了基础知识, 让我们执行该批处理!
执行批处理文件 对于此示例, 我们的批处理文件将为以下文件(为Windowselectronexample.bat编写):
@echo offREM The name of the file that will be created
set filename=electronfileexample.txt
REM the path where the file will be created
set filepath=c:\
REM the content of the file
set content=Hello, this is the content of my file created with batch
REM the full path (path+filename)
set fullpath=%filepath%%filename%echo Sending a "JSON" String
echo {"filename":"%filename%", "content":"%content%", "fullpath":"%fullpath%"}REM Text to send to stdout (data)
REM Note that you can append 2>
&
1 to the normal stdout
REM echo This text will be sent to my Electron Project
REM or
REM echo This text will be sent to my Electron Project 2>
&
1REM Text to send to stderr (error) 1>
&
2
REM echo This text should ouput an error 1>
&
2echo An error message passing by, nothing important :) Just ignore me 1>
&
2IF EXIST %filepath%%filename% (
echo File already exists
EXIT /B 1
) ELSE (
@echo Creating file in %fullpath%
(
echo %content%
) >
%filepath%%filename%
)REM Check if the file was created, if exists send code 2
REM if the file doesn't exist then send code 3 (error while creating)
IF EXIST %filepath%%filename% (
EXIT /B 2
) ELSE (
EXIT /B 3
)
一个简单的代码片段, 它将检查c:/路径中是否存在文件, 如果存在, 则发送一条消息, 指出” 文件已存在” , 否则创建文件并发送消息” 在c:/electronfileexample.txt中创建文件” 。然后检查它是否存在, 如果存在, 则用代码2完成执行, 如果不存在, 则用代码3退出。
使用Electron(使用Node.js), 你将需要创建一个子进程。与Python不同, node.js是异步的, 这意味着它无需等待script.bat完成。而是调用script.bat打印数据或存在时先前定义的函数。
现在要使用javascript处理批处理, 请使用以下代码:
"use strict";
// The path to the .bat file
var myBatFilePath = "C:\\Users\\SDkCarlos\\Desktop\\electrontest.bat";
const spawn = require('child_process').spawn;
const bat = spawn('cmd.exe', ['/c', myBatFilePath]);
// Handle normal output
bat.stdout.on('data', (data) =>
{
// As said before, convert the Uint8Array to a readable string.
var str = String.fromCharCode.apply(null, data);
console.info(str);
});
// Handle error output
bat.stderr.on('data', (data) =>
{
// As said before, convert the Uint8Array to a readable string.
var str = String.fromCharCode.apply(null, data);
console.error(str);
});
// Handle on exit event
bat.on('exit', (code) =>
{
var preText = `Child exited with code ${code} : `;
switch(code){
case 0:
console.info(preText+"Something unknown happened executing the batch.");
break;
case 1:
console.info(preText+"The file already exists");
break;
case 2:
console.info(preText+"The file doesn't exists and now is created");
break;
case 3:
console.info(preText+"An error ocurred while creating the file");
break;
}
});
控制台的输出应类似于(没有HTML标记, 只能看到右侧的控制台):
文章图片
你可以在此处的官方ourcodeworldElectron示例存储库” electron-batch-childprocess” 中看到之前的示例。玩得开心
推荐阅读
- WuMgr(一个开放源代码工具,用于管理Windows OS上的Microsoft产品更新)
- 如何在Windows中使用Electron框架为桌面(html,css和javascript)创建混合应用程序
- Android Log Viewer(一个日志查看器工具,可简化实时对Android日志的分析)
- 如何将相机与Electron Framework一起使用(创建快照)并将图像保存在系统上
- Electron框架的语音命令(语音识别)和语音合成
- 如何在Electron Framework中使用node.js(SSH2)创建sftp客户端
- 如何使用Electron框架获取操作系统和硬件信息
- 如何在Android中跟踪关键的应用参与度指标
- 如何在Android中使用Sweet Alert对话框