likes
comments
collection
share

在utool的自动化助手里写node脚本

作者站长头像
站长
· 阅读数 21

在这生活工作中,为了方便快捷,我用了一款工具软件>>>uTools, 现在分享一下,我在这个软件中的自动化脚本插件里写的几个node脚本

贴一下uTools的官网uTools官网 - 新一代效率工具平台

1.快速设置网络代理

解决痛点:偶尔会有因使用魔法后访问不了网络的问题

在utool的自动化助手里写node脚本

在utool的自动化助手里写node脚本

关键字: qw

在utool的自动化助手里写node脚本

在自动化脚本里我只是使用了一段代码,当用户触发关键字时,会自动执行 'E:/其他/myTest/node脚本/更改网络/index.js' 地址里的文件

之所以这样📦文件地址来运行脚本是因为 uTools 并不支持一些npm插件,所以需要把启动的脚本指向我们的本地地址

const { execFile } = require("child_process")

 // 以下是关键代码,调用 node 来执行目标文件
execFile('node', ['E:/其他/myTest/node脚本/更改网络/index.js'], (error, stdout, stderr) => {
    utools.showNotification(stdout) // 系统将通知 fooBar
})

下面才是脚本的内容

首先我们需要 npm init -y 初始化一个node项目, 然后 npm i regedit ,下载regedit 插件,然后创建index.js文件(PS:注意文件的地址,需要跟刚才自己设置的uTools指定的地址一致)

index.js

const regedit = require('regedit').promisified;
// 注册表
const internetSettingsPath = 'HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings';

async function toggleProxy() {
  try {
    // 获取当前代理状态
    const result = await regedit.list(internetSettingsPath);
    const proxyEnable = result[internetSettingsPath].values['ProxyEnable'];

    if (proxyEnable) {
      console.log(proxyEnable.value, '当前代理状态  : 1-开启 0-关闭');

      // 设置新的代理值
      const valuesToPut = {
        [internetSettingsPath]: {
          'ProxyServer': {
            value: '127.0.0.1:7890', // 代理地址
            type: 'REG_SZ'
          },
          'ProxyEnable': {
            value: proxyEnable.value === 0 ? 1 : 0, // 1-开启 0-关闭
            type: 'REG_DWORD'
          }
        }
      };

      // 更新注册表值
      await regedit.putValue(valuesToPut);
      console.log('代理设置已更新');
    } else {
      console.log('ProxyEnable 值不存在');
    }
  } catch (error) {
    console.error('获取值或设置值时出错:', error);
  }
}

// 调用函数切换代理
toggleProxy();

注意 [internetSettingsPath]: { 'ProxyServer': { value: '127.0.0.1:7890', // 代理地址 type: 'REG_SZ' }, 里的value 是要代理的地址,可自行配置

这样设置完,我们就可以直接快捷切换网络了!!!

在utool的自动化助手里写node脚本

2.快速创建html文件,并且运行

解决痛点:在开发中我们可能需要创建文件进行测试一些功能,下面这个脚本可以支持,触发关键字,自动在指定的文件夹创建html并直接使用vscode打开文件 ,也方便了测试文件的归档,便于日后查找

下面是我的脚本设置,童鞋们可自取(在脚本广场中已分享,可自取下载)

关键字: 以.h结尾 (.h 前面的文字内容即创建好的html的文件名)

在utool的自动化助手里写node脚本

脚本内容(创建的html的body部分可自行设置)


const { spawn } = require('child_process');

if (utools.isWindows()) {
    if(ENTER.payload.includes('.h')){
      let fileName = ENTER.payload.replace('.h','.html')
           let filePath = `E:/其他/myTest/html/${fileName}`
      let content = `<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <style>
        h1{
            color: red;
        }
    </style>
    <h1>Lab测试</h1></h1>
    <script>
        console.log('Lab测试')
    </script>
</body>
</html>`

require('fs').writeFile(filePath, content, 'utf8', (err) => {
          if (err) {
            console.error('写入文件时发生错误:', err);
          } else {
            console.log('文件写入成功!');
              // 打开 VSCode 并在后台启动
                spawn('start', ['/B', 'code', filePath], { shell: true });
          }
      });
    }

}

其中 let filePath = E:/其他/myTest/html/${fileName} 这里的前半段(E:/其他/myTest/html/)就是 所创建的html文件要保存到的位置

3.快速切换node版本(使用nvm进行切换,需要保证有对应的node版本)

解决痛点:在开发中我们可能需要根据不同的项目切换对应的node版本,在自动化脚本中,我们可以凭借脚本快速切换指定的node版本

下面是我的脚本设置,童鞋们可自取(在脚本广场中已分享,可自取下载)

关键字: 以nd开头 (nd 后面的数字即要切换的node版本) 在utool的自动化助手里写node脚本

下面是脚本内容

const { shell } = require('electron');

// 获取用户输入的关键字


// 判断关键字是否以 "nd" 开头
if (utools.isWindows() && ENTER.payload.startsWith("nd")&&ENTER.payload.length>2   ) {
    // 提取版本号部分
    const version = ENTER.payload.slice(2);

    // 根据关键字执行相应的命令
    function executeNvmCommand(version) {
       const childProcess = require('child_process').spawn(
    'cmd.exe', ['/c', `nvm use ${version}`],
    {
      detached: true,
      stdio: 'ignore',
      shell: true
    }
  );

  childProcess.unref();
    }

    // 执行命令
    executeNvmCommand(version);
} else {
    console.log("不匹配关键字规则,不执行任何操作。");
}

在utool的自动化助手里写node脚本

转载自:https://juejin.cn/post/7399530650000605218
评论
请登录