11 个 JavaScript 杀手脚本,用于自动执行日常任务

今天这篇文章,我将分享我使用收藏的 11 个 JavaScript 脚本,它们可以帮助您自动化日常工作的各个方面。

1. 自动文件备份

担心丢失重要文件?此脚本将文件从一个目录复制到备份文件夹,确保您始终保存最新版本。

javascript 复制代码
const fs = require('fs');const path = require('path');
function backupFiles(sourceFolder, backupFolder) {  fs.readdir(sourceFolder, (err, files) => {    if (err) throw err;    files.forEach((file) => {      const sourcePath = path.join(sourceFolder, file);      const backupPath = path.join(backupFolder, file);      fs.copyFile(sourcePath, backupPath, (err) => {        if (err) throw err;        console.log(`Backed up ${file}`);      });    });  });}const source = '/path/to/important/files';const backup = '/path/to/backup/folder';backupFiles(source, backup);

提示:将其作为 cron 作业运行

2. 发送预定电子邮件

需要稍后发送电子邮件但又担心忘记?此脚本允许您使用 Node.js 安排电子邮件。

php 复制代码
const nodemailer = require('nodemailer');
function sendScheduledEmail(toEmail, subject, body, sendTime) {  const delay = sendTime - Date.now();  setTimeout(() => {    let transporter = nodemailer.createTransport({      service: 'gmail',      auth: {        user: 'your_email@gmail.com',        pass: 'your_password', // Consider using environment variables for security      },    });    let mailOptions = {      from: 'your_email@gmail.com',      to: toEmail,      subject: subject,      text: body,    };    transporter.sendMail(mailOptions, function (error, info) {      if (error) {        console.log(error);      } else {        console.log('Email sent: ' + info.response);      }    });  }, delay);}// Schedule email for 10 seconds from nowconst futureTime = Date.now() + 10000;sendScheduledEmail('recipient@example.com', 'Hello!', 'This is a scheduled email.', futureTime);

注意:传递您自己的凭据

3. 监控目录的更改

是否曾经想跟踪文件的历史记录。这可以帮助您实时跟踪它。

javascript 复制代码
const fs = require('fs');
function monitorFolder(pathToWatch) {  fs.watch(pathToWatch, (eventType, filename) => {    if (filename) {      console.log(`${eventType} on file: ${filename}`);    } else {      console.log('filename not provided');    }  });}monitorFolder('/path/to/watch');

用例:非常适合关注共享文件夹或监控开发目录中的变化。

4. 将图像转换为 PDF

需要将多幅图像编译成一个 PDF?此脚本使用 pdfkit 库即可完成此操作。

javascript 复制代码
const fs = require('fs');const PDFDocument = require('pdfkit');
function imagesToPDF(imageFolder, outputPDF) {  const doc = new PDFDocument();  const writeStream = fs.createWriteStream(outputPDF);  doc.pipe(writeStream);  fs.readdir(imageFolder, (err, files) => {    if (err) throw err;    files      .filter((file) => /.(jpg|jpeg|png)$/i.test(file))      .forEach((file, index) => {        const imagePath = `${imageFolder}/${file}`;        if (index !== 0) doc.addPage();        doc.image(imagePath, {          fit: [500, 700],          align: 'center',          valign: 'center',        });      });    doc.end();    writeStream.on('finish', () => {      console.log(`PDF created: ${outputPDF}`);    });  });}imagesToPDF('/path/to/images', 'output.pdf');

提示:非常适合编辑扫描文档或创建相册。

5. 桌面通知提醒

再也不会错过任何约会。此脚本会在指定时间向您发送桌面通知。

javascript 复制代码
const notifier = require('node-notifier');
function desktopNotifier(title, message, notificationTime) {  const delay = notificationTime - Date.now();  setTimeout(() => {    notifier.notify({      title: title,      message: message,      sound: true, // Only Notification Center or Windows Toasters    });    console.log('Notification sent!');  }, delay);}// Notify after 15 secondsconst futureTime = Date.now() + 15000;desktopNotifier('Meeting Reminder', 'Team meeting at 3 PM.', futureTime);

注意:您需要先安装此包:npm install node-notifier。

6. 自动清理旧文件

此脚本会删除超过 n 天的文件。

javascript 复制代码
const fs = require('fs');const path = require('path');
function cleanOldFiles(folder, days) {  const now = Date.now();  const cutoff = now - days * 24 * 60 * 60 * 1000;  fs.readdir(folder, (err, files) => {    if (err) throw err;    files.forEach((file) => {      const filePath = path.join(folder, file);      fs.stat(filePath, (err, stat) => {        if (err) throw err;        if (stat.mtime.getTime() < cutoff) {          fs.unlink(filePath, (err) => {            if (err) throw err;            console.log(`Deleted ${file}`);          });        }      });    });  });}cleanOldFiles('/path/to/old/files', 30);

警告:请务必仔细检查文件夹路径,以避免删除重要文件。

7. 在语言之间翻译文本文件

需要快速翻译文本文件?此脚本使用 API 在语言之间翻译文件。

javascript 复制代码
const fs = require('fs');const axios = require('axios');
async function translateText(text, targetLanguage) {  const response = await axios.post('https://libretranslate.de/translate', {    q: text,    source: 'en',    target: targetLanguage,    format: 'text',  });  return response.data.translatedText;}(async () => {  const originalText = fs.readFileSync('original.txt', 'utf8');  const translatedText = await translateText(originalText, 'es');  fs.writeFileSync('translated.txt', translatedText);  console.log('Translation completed.');})();

注意:这使用了 LibreTranslate API,对于小型项目是免费的。

8. 将多个 PDF 合并为一个

轻松将多个 PDF 文档合并为一个文件。

javascript 复制代码
const fs = require('fs');const PDFMerger = require('pdf-merger-js');
async function mergePDFs(pdfFolder, outputPDF) {  const merger = new PDFMerger();  const files = fs.readdirSync(pdfFolder).filter((file) => file.endsWith('.pdf'));  for (const file of files) {    await merger.add(path.join(pdfFolder, file));  }  await merger.save(outputPDF);  console.log(`Merged PDFs into ${outputPDF}`);}mergePDFs('/path/to/pdfs', 'merged_document.pdf');

应用程序:用于将报告、发票或任何您想要的 PDF 合并到一个地方。

9. 批量重命名文件

需要重命名一批文件吗?此脚本根据模式重命名文件。

javascript 复制代码
const fs = require('fs');const path = require('path');
function batchRename(folder, prefix) {  fs.readdir(folder, (err, files) => {    if (err) throw err;    files.forEach((file, index) => {      const ext = path.extname(file);      const oldPath = path.join(folder, file);      const newPath = path.join(folder, `${prefix}_${String(index).padStart(3, '0')}${ext}`);      fs.rename(oldPath, newPath, (err) => {        if (err) throw err;        console.log(`Renamed ${file} to ${path.basename(newPath)}`);      });    });  });}batchRename('/path/to/files', 'image');

提示:padStart(3, '0') 函数用零填充数字(例如,001,002),这有助于排序。

10. 抓取天气数据

通过从天气 API 抓取数据来了解最新天气情况。

javascript 复制代码
const axios = require('axios');
async function getWeather(city) {  const apiKey = 'your_openweathermap_api_key';  const response = await axios.get(    `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`  );  const data = response.data;  console.log(`Current weather in ${city}: ${data.weather[0].description}, ${data.main.temp}°C`);}getWeather('New York');

注意:您需要在 OpenWeatherMap 注册一个免费的 API 密钥。

11. 生成随机引语

此脚本获取并显示随机引语。

javascript 复制代码
const axios = require('axios');
async function getRandomQuote() {  const response = await axios.get('https://api.quotable.io/random');  const data = response.data;  console.log(`"${data.content}" \n- ${data.author}`);}getRandomQuote();

最后,感谢您一直阅读到最后!希望今天内容能够帮助到你,如果你喜欢此内容的话,也请分享给你的小伙伴,也许能够帮助到他们。

作者:程序员成长指北 原文:mp.weixin.qq.com/s/H4PISOy1g...

相关推荐
mldong5 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排5 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60616 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角7 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!7 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰7 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi9 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen9 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马10 小时前
AI源码分析:拆解模型底层实现逻辑
前端
BillKu10 小时前
全局样式变量:CSS 自定义属性(--border-color)和SCSS 变量($border-color)的说明
javascript·css·scss