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'))

這個時候我們再執行就正常了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章