11个JavaScript自动执行日常任务的脚本分析

 更新时间:2025年05月12日 09:53:55   作者:独立开阀者_FwtCoder  
这篇文章主要和大家分享 11 个 JavaScript 脚本,它们可以帮助您自动化日常工作的各个方面,文中的示例代码讲解详细,有需要的小伙伴可以了解下

1. 自动文件备份

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

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 安排电子邮件。

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. 监控目录的更改

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

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 库即可完成此操作。

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. 桌面通知提醒

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

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 天的文件。

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 在语言之间翻译文件。

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 文档合并为一个文件。

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. 批量重命名文件

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

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 抓取数据来了解最新天气情况。

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. 生成随机引语

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

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();

到此这篇关于11个JavaScript自动执行日常任务的脚本分析的文章就介绍到这了,更多相关JavaScript自动执行脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript前后端数据交互工具ajax使用教程

    JavaScript前后端数据交互工具ajax使用教程

    Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信方式
    2022-10-10
  • JavaScript中.min.js和.js文件的区别讲解

    JavaScript中.min.js和.js文件的区别讲解

    今天小编就为大家分享一篇关于JavaScript中.min.js和.js文件的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 微信小程序实现监听页面滚动

    微信小程序实现监听页面滚动

    这篇文章主要为大家详细介绍了微信小程序实现监听页面滚动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • JS实现给对象动态添加属性的方法

    JS实现给对象动态添加属性的方法

    这篇文章主要介绍了JS实现给对象动态添加属性的方法,涉及JS属性的遍历、动态赋值及eval方法的简单使用技巧,需要的朋友可以参考下
    2017-01-01
  • JS+HTML5 FileReader对象用法示例

    JS+HTML5 FileReader对象用法示例

    这篇文章主要介绍了JS+HTML5 FileReader对象用法,结合具体实例形式分析了FileReader对象的常用方法及简单使用技巧,需要的朋友可以参考下
    2017-04-04
  • 当前流行的JavaScript代码风格指南

    当前流行的JavaScript代码风格指南

    这篇文章主要介绍了当前流行的JavaScript代码风格指南,同时推荐了一款风格检验工具jshint,可以配合大多数的编辑器统一团队代码风格,需要的朋友可以参考下
    2014-09-09
  • JS实现的抛物线运动效果示例

    JS实现的抛物线运动效果示例

    这篇文章主要介绍了JS实现的抛物线运动效果,结合实例形式分析了javascript抛物线运动的相关运算与元素动态操作实现技巧,需要的朋友可以参考下
    2018-01-01
  • 微信小程序实现轨迹回放的示例代码

    微信小程序实现轨迹回放的示例代码

    这篇文章主要介绍了微信小程序实现轨迹回放的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 微信小程序遍历Echarts图表实现多个饼图

    微信小程序遍历Echarts图表实现多个饼图

    这篇文章主要介绍了微信小程序遍历Echarts图表实现多个饼图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 怎么清空javascript数组

    怎么清空javascript数组

    这是一个很基础的问题,但是我们往往经常做错,这里简单分享下,方便需要的朋友
    2013-05-05

最新评论