美文网首页
根据条件过滤出数据,并将对应文件复制到指定目录

根据条件过滤出数据,并将对应文件复制到指定目录

作者: zhuyx0304 | 来源:发表于2024-07-04 14:43 被阅读0次
const fs = require('fs').promises;
const path = require('path');

const { points, routes, scenics } = require('./data.js');

// async function copyFile(src, dest) {
//   try {
//     await fs.mkdir(path.dirname(dest), { recursive: true });
//     await fs.copyFile(src, dest);
//     console.log(`File copied successfully!`);
//   } catch (err) {
//     console.error(err);
//   }
// }

async function copyFile(src, dest) {
  const maxRetries = 10;
  const retryDelay = 5000; // 1秒
  let retries = 0;

  while (retries < maxRetries) {
    try {
      await fs.mkdir(path.dirname(dest), { recursive: true });
      await fs.copyFile(src, dest);
      console.log(`File copied successfully!`);
      return;
    } catch (err) {
      if (err.code === 'EBUSY') {
        retries++;
        console.log(`File is busy or locked. Retrying in ${retryDelay / 1000} seconds...`);
        await new Promise(resolve => setTimeout(resolve, retryDelay));
      } else {
        throw err;
      }
    }
  }
  throw new Error('Failed to copy file after multiple retries.');
}

const sourcePath = path.join('F:/'); // 源文件路径
const outputPath = path.join('C:/output/'); // 输出文件路径

function run() {
  routes.forEach(route => {
    const list = points.filter(item => {
      return item.line && item.line.includes(route);
    })
    list.forEach(item => {
      const fileName = item.fileName + '.jpg';
      const source = path.join(sourcePath, fileName);
      const destination = path.join(outputPath, `${route}/${fileName}`);
      copyFile(source, destination);
    })
  })

  scenics.forEach(scenic => {
    const list = points.filter(item => {
      return item.scene && item.scene.includes(scenic);
    })
    list.forEach(item => {
      const fileName = item.fileName + '.jpg';
      const source = path.join(sourcePath, fileName);
      const destination = path.join(outputPath, `${scenic}/${fileName}`);
      copyFile(source, destination);
    })
  })
}

run();

console.log('run...')

相关文章

  • admin05-find精确查找

    find 按条件查找文件/目录所在位置 • 根据预设的条件递归查找对应的文件 可以查找子目录 – find [目...

  • 远程拷贝命令:scp用法

    从远处复制文件到本地目录 从远处复制到本地 上传本地文件到远程机器指定目录 上传本地目录到远程机器指定目录 本文只...

  • cornerstone 怎么设置 忽略指定的文件不提交不更新

    1、先将指定文件备份,删除目录中的文件,2、再将备份的文件复制到目录中3、然后到cornerstone找到该文件,...

  • 算法与编程

    1、编写一个程序,将 d:\java 目录下的所有.java 文件复制到d:\jad 目录下,并将原来文件的扩展名...

  • 运维工程师必备命令之文件管理

    文件管理: cp命令: 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。 重点掌握: 【-u】只复制文件...

  • linux常用命令

    linux常用命令 文件查找 find [指定目录][指定条件][指定动作] 指定目录:​ find命令所查找的目...

  • cp命令

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文...

  • Linux 中 cp 命令(文件复制)

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文...

  • cp命令用法

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文...

  • 【BLE】腾讯连连调试记录

    Q:如何通过json文件生成对应的.c和.h文件A:将对应的文件放到指定目录下。 在该目录下打开PowerShel...

网友评论

      本文标题:根据条件过滤出数据,并将对应文件复制到指定目录

      本文链接:https://www.haomeiwen.com/subject/tonicjtx.html