基于nodejs实现一个切换node版本的工具

51 阅读1分钟

前置技能

node执行cmd或shell命令 - 简书 (jianshu.com)

【前端 Js】Js/Node.js怎么读取系统环境变量(用户变量/系统变量)最简单版_js如何读取系统变量-CSDN博客

向windows中添加环境变量

const { exec } = require('child_process'); 
// 设置环境变量名为'MY_VAR',值为'MyValue' 
const command = 'setx MY_VAR "MyValue" /M'; // '/M'标志表示设置为系统环境变量,去掉则设置为用户环境变量 
exec(command, (error, stdout, stderr) => { 
    if (error) { 
        console.error(`执行出错: ${error}`); 
        return; 
    } 
    console.log(`stdout: ${stdout}`); 
    console.error(`stderr: ${stderr}`); 
});

向windows中追加环境变量值

const { exec } = require('child_process'); 
// 假设我们要追加的环境变量名为'MY_PATH',要追加的值为';C:\\new\\path' const envVarName = 'MY_PATH'; const valueToAppend = ';C:\\new\\path'; 
// 获取当前环境变量值 
exec(`echo %${envVarName}%`, (error, stdout, stderr) => { 
    if (error) { 
        console.error(`获取环境变量出错: ${error}`); 
        return; 
    } 
    let currentValue = stdout.trim(); // 去除前后空白字符 
    // 追加新值 
    const newValue = currentValue + valueToAppend; 
    // 使用setx命令设置新值,注意这里需要构造正确的命令 
    const setxCommand = `setx ${envVarName} "${newValue}" /M`; // '/M' 表示设置为系统环境变量 
    // 执行setx命令 
    exec(setxCommand, (error, stdout, stderr) => { 
        if (error) { 
           console.error(`设置环境变量出错: ${error}`); 
        } else { 
           console.log(`环境变量${envVarName}已更新.`); 
        } 
    }); 
});

用setx设置永久环境变量及注意事项_setx不生效-CSDN博客

Windows使用cmd命令行中查看、修改、删除与添加环境变量 - springsnow - 博客园 (cnblogs.com)

SET和SETX命令的应用-CSDN博客