let userEnvironmentName = `${os.hostname()}\\\\${basename(os.homedir())}`
//删除用户环境变量OPENCV_HOME
execSync(`wmic ENVIRONMENT where "name='OPENCV_HOME' and UserName='${userEnvironmentName}'" delete`)
//新增用户环境变量OPENCV_HOME,重复会报错,所以先删除后下载
execSync(`wmic ENVIRONMENT create name="OPENCV_HOME",username="${userEnvironmentName}",VariableValue=${data}Mobile\\All\\opencv\\build\\java\\x64\\opencv_java342.dll`, {})
//更改用户环境变量
let pathValue = ''
//先获取用户path的值进行处理,让后储存,不然连带系统环境变量都会写入。
pathValue = execSync(`wmic ENVIRONMENT where "name='Path' and UserName='${userEnvironmentName}'" get VariableValue`, { encoding: 'utf-8' })
.replace('VariableValue', '')
.trim()
.replace(/\n/g, '')
.replace(/%/g, '^%')
if (!pathValue.includes('platform-tools')) {
//将用户的原本的path环境变量储存和要增加的一起放入
execSync(
`wmic ENVIRONMENT where "name='Path' and UserName='${userEnvironmentName}'" set VariableValue='${pathValue};^%ANDROID_HOME^%\\platform-tools;^%ANDROID_HOME^%\\tools;C:\\Program Files\\nodejs;^%JAVA_HOME^%\\bin;^%JAVA_HOME^%\\jre\\bin;'`,
{}
}
//用户环境变量用户名。
let userEnvironmentName = `${os.hostname()}\\\\${basename(os.homedir())}`
//删除用户环境变量
`wmic ENVIRONMENT where "name='OPENCV_HOME' and UserName='${userEnvironmentName}'" delete`
//新增用户环境变量
`wmic ENVIRONMENT create name="OPENCV_HOME",username="${userEnvironmentName}",VariableValue=`
//获取用户环境变量
`wmic ENVIRONMENT where "name='Path' and UserName='${userEnvironmentName}'" get VariableValue=`
//更改用户环境变量
`wmic ENVIRONMENT where "name='Path' and UserName='${userEnvironmentName}'" set VariableValue='^%path^%'`
name是环境变量名,UserName是环境变量存在的位置,主要是系统和用户,VariableValue是环境变量值
tips1:userEnvironmentName就是UserName,这里是最重要,想要改变系统环境变量就需要权限,系统的名称一般为<SYSTEM>,想要改变用户变量就一定需要用户环境变量的用户名称,通过获取用户环境变量可以更清楚的看到,,也就是关键代码中用户环境变量用户名的那一段,需要自己去获取,我的os.hostname()}\\${basename(os.homedir())不一定是对的,一般来说就是电脑名称\用户名称。
tips2:更改用户环境变量中我的操作很复杂,因为%path%获取的是全部的环境变量,包括系统和用户,想要只改变用户的环境,那么就需要先获取用户的环境变量进行处理,然后进行拼接,这样也有一些好处在tips3中。
tips3:更改变量最关键的一个问题就是很多%%中的环境变量会被翻译出来,这个时候需要进行转义也就是将%变成^%,这个时候需要主要的就是""和’‘,双引号在cmd批处理中是有着转义的意思的,所以^在双引号中有时候无效,可以合理的使用’',这样在环境中的%%就可以保持原本的样子了。
https://blog.csdn.net/qq_39621009/article/details/122349526
https://www.cnblogs.com/mqxnongmin/p/10875515.html