electron-vue跨平台桌面应用开发实战教程(十)——执行cmd命令

本文主要讲解electron如何执行cmd命令

通常我们有些功能是需要借助外部程序才能完成的,例如通过我们写的electron启动nginx或者获取本机的一些信息。

执行cmd命令不需要安装额外的依赖,使用node的child_process模块即可完成这个功能。

1.引用child_process模块
import { exec } from 'child_process'
2.执行CMD命令

这里我们执行一下windows常用命令ipconfig,使用child_process执行cmd命令是可以指定执行的目录的(cmdPath)

 // 任何你期望执行的cmd命令,ls都可以
      const cmdStr = 'ipconfig'
      // 执行cmd命令的目录,如果使用cd xx && 上面的命令,这种将会无法正常退出子进程
      const cmdPath = pathUtil.getAppResourcePath('')

      // 执行命令行,如果命令不需要路径,或就是项目根目录,则不需要cwd参数:
      const workerProcess = exec(cmdStr, { cwd: cmdPath })
      // 不受child_process默认的缓冲区大小的使用方法,没参数也要写上{}:workerProcess = exec(cmdStr, {})

      // 打印正常的后台可执行程序输出
      workerProcess.stdout.on('data', function (data) {
        console.log('stdout: ' + data)
      })

      // 打印错误的后台可执行程序输出
      workerProcess.stderr.on('data', function (data) {
        console.log('stderr: ' + data)
      })

      // 退出之后的输出
      workerProcess.on('close', function (code) {
        console.log('out code:' + code)
      })

这个时候我们可以看到控制台输出的内容
在这里插入图片描述
我们可以看到输入的结果中,中文乱码,接下来我们来解决乱码,这里我们需要引入一个外部依赖iconv-lite

3.安装iconv-lite
npm install iconv-lite --save
4.使用iconv-lite解决乱码

引入 iconv-lite

const iconv = require('iconv-lite')

将原来的

const workerProcess = exec(cmdStr, { cwd: cmdPath })
console.log('stdout: ' + data)

分别改为

const workerProcess = exec(cmdStr, { cwd: cmdPath, encoding: 'GBK' })
console.log('stdout: ' + iconv.decode(data, 'GBK'))

这个时候我们再执行就正常了
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值