Node.JS通过读取PATH环境变量获取可执行文件的安装地址


发布者 ourjs  发布时间 1494570584077
关键字 大话编程  分享 
有暑假我们可能需要获取某些可执行程序的安装地址,比如说git,node.js等。

此时我们可以直接读取环境变量来获取。

1. 访问环境变量

在node.js中可以通过 process.env来获取所有环境变量,如:

console.log(process.env)
输出结果:

{ ACLOCAL_PATH: '/mingw64/share/aclocal:/usr/share/aclocal',
  ALLUSERSPROFILE: 'C:\\ProgramData',
  APPDATA: 'C:\\Users\\Administrator\\AppData\\Roaming',
  COMMONPROGRAMFILES: 'C:\\Program Files\\Common Files',
  'CommonProgramFiles(x86)': 'C:\\Program Files (x86)\\Common Files',
  CommonProgramW6432: 'C:\\Program Files\\Common Files',
  COMPUTERNAME: 'SKY-20161119COR',
  COMSPEC: 'C:\\Windows\\system32\\cmd.exe',
  CONFIG_SITE: '/mingw64/etc/config.site',
  DISPLAY: 'needs-to-be-defined',
  EXEPATH: 'C:\\Program Files\\Git',
  FP_NO_HOST_CHECK: 'NO',
  HOME: 'C:\\Users\\Administrator',
  HOMEDRIVE: 'C:',
  HOMEPATH: '\\Users\\Administrator',
  HOSTNAME: 'SKY-20161119COR',
  INFOPATH: '/usr/local/info:/usr/share/info:/usr/info:/share/info',
  LANG: 'C.UTF-8',
  LOCALAPPDATA: 'C:\\Users\\Administrator\\AppData\\Local',
  LOGONSERVER: '\\\\SKY-20161119COR',
  MANPATH: '/mingw64/share/man:/usr/local/man:/usr/share/man:/usr/man:/share/man',
  MINGW_CHOST: 'x86_64-w64-mingw32',
  MINGW_PACKAGE_PREFIX: 'mingw-w64-x86_64',
  MINGW_PREFIX: '/mingw64',
  MSYSTEM: 'MINGW64',
  MSYSTEM_CARCH: 'x86_64',
  MSYSTEM_CHOST: 'x86_64-w64-mingw32',
  MSYSTEM_PREFIX: '/mingw64',
  NUMBER_OF_PROCESSORS: '4',
  OneDrive: 'C:\\Users\\Administrator\\OneDrive',
  ORIGINAL_PATH: '/mingw64/bin:/usr/bin:/c/Users/Administrator/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Win
dows/System32/WindowsPowerShell/v1.0:/c/Program Files/TortoiseSVN/bin:/c/Program Files/nodejs:/c/Program Files (x86)/Skype/Phone:
/c/Program Files/Microsoft SQL Server/110/Tools/Binn:/c/Program Files (x86)/Microsoft SDKs/TypeScript/1.0:/c/Program Files/Micros
oft SQL Server/120/Tools/Binn:/c/Program Files/TortoiseGit/bin:/cmd:/c/Users/Administrator/AppData/Roaming/npm',
  ORIGINAL_TEMP: '/tmp',
  ORIGINAL_TMP: '/tmp',
  OS: 'Windows_NT',
  PATH: 'C:\\Users\\Administrator\\bin;C:\\Program Files\\Git\\mingw64\\bin;C:\\Program Files\\Git\\usr\\local\\bin;C:\\Program F
iles\\Git\\usr\\bin;C:\\Program Files\\Git\\usr\\bin;C:\\Program Files\\Git\\mingw64\\bin;C:\\Program Files\\Git\\usr\\bin;C:\\Us
ers\\Administrator\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v
1.0;C:\\Program Files\\TortoiseSVN\\bin;C:\\Program Files\\nodejs;C:\\Program Files (x86)\\Skype\\Phone;C:\\Program Files\\Micros
oft SQL Server\\110\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SDKs\\TypeScript\\1.0;C:\\Program Files\\Microsoft SQL Server
\\120\\Tools\\Binn;C:\\Program Files\\TortoiseGit\\bin;C:\\Program Files\\Git\\cmd;C:\\Users\\Administrator\\AppData\\Roaming\\np
m;C:\\Program Files\\Git\\usr\\bin\\vendor_perl;C:\\Program Files\\Git\\usr\\bin\\core_perl',
  PATHEXT: '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',

2. 从Path获取可执行文件地址

一般的可地文件的地址都存放在Path环境变量中,并且以分号分隔。此时,我们可以通过查找这个变量来得知文件的真实路径。

function getExePath(extName) {
  var strPath   = process.env['PATH']

  var nodePath  = strPath.split(';').filter((str) => {
    if (str.toLowerCase(extName).indexOf(extName.toLowerCase()) > 0) {
      return true
    }
  }) || []

  return nodePath[0]
}

比如说,查找git和node.js的安装地址

console.log(getExePath('nodejs'))
console.log(getExePath('git'))

输出结果

C:\Program Files\nodejs
C:\Program Files\Git\mingw64\bin















回复 (2)
  • #
  • #1 高皮内 1526621158960

    的说法都是

  • #2 高皮内 1526621191126

    的说法都是的说法都是

微信扫码 立即评论




 热门文章 - 分享最多
  1. JavaScript使用ES6的Class面向对象继承时 this is not defined 解决方法
  2. Docker改名Moby:急于商业化陷入品牌更名乱象
  3. Java已快过时?斯坦福大学将JavaScript作为计算机科学入门课
  4. TCP/UDP协议比较:在Node.JS中UDP服务器和客户端通信示例
  5. Node.JS通过原型和类继承EventEmitter,实现收发事件的几种方法
  6. 2016 年崛起的 JS 项目
  7. 如何基于SVG矢量图制作一个可填写信息的可视化表单-OnceVI
  8. 周鸿祎:一些程序员没有商业意识,却又很自负,一看就知道不会创业
  9. Node.js网页抓取:一个最简单的http请求客户端示例(request client)
  10. 学哪种语言的最赚钱?调查显示JavaScript和SQL是程序员最常用的语言

 相关阅读
  1. 程序员年纪大就做不了了?这些45到60岁的码农还在写代码
  2. 国家卫计委发文要求互联网医院全部注销
  3. linux用tar文件压缩命令备份系统的方法
  4. JavaScript使用ES6的Class面向对象继承时 this is not defined 解决方法
  5. TCP/UDP协议比较:在Node.JS中UDP服务器和客户端通信示例
  6. 周鸿祎:一些程序员没有商业意识,却又很自负,一看就知道不会创业
  7. 微信抢红包插件示例代码及其实现原理
  8. 学哪种语言的最赚钱?调查显示JavaScript和SQL是程序员最常用的语言
  9. 搜狐社区宣布关闭,又有多少人的回忆被埋葬在PC时代里?
  10. 第三方评论平台多说即将关闭

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA