在utool的自动化助手里写node脚本
在这生活工作中,为了方便快捷,我用了一款工具软件>>>uTools, 现在分享一下,我在这个软件中的自动化脚本
插件里写的几个node脚本
贴一下uTools的官网uTools官网 - 新一代效率工具平台
1.快速设置网络代理
解决痛点:偶尔会有因使用魔法后访问不了网络的问题
关键字: qw
在自动化脚本里我只是使用了一段代码,当用户触发关键字时,会自动执行 '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
是要代理的地址,可自行配置
这样设置完,我们就可以直接快捷切换网络了!!!
2.快速创建html文件,并且运行
解决痛点:在开发中我们可能需要创建文件进行测试一些功能,下面这个脚本可以支持,触发关键字,自动在指定的文件夹创建html并直接使用vscode打开文件 ,也方便了测试文件的归档,便于日后查找
下面是我的脚本设置,童鞋们可自取(在脚本广场中已分享,可自取下载)
关键字: 以.h
结尾 (.h 前面的文字内容即创建好的html的文件名)
脚本内容(创建的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版本)
下面是脚本内容
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("不匹配关键字规则,不执行任何操作。");
}
转载自:https://juejin.cn/post/7399530650000605218