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...')
根据条件过滤出数据,并将对应文件复制到指定目录
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提...
- 1.获取APP当前目录路径: 2.创建文件: 3.创建文件夹 4.将assets下文件复制到指定目录下 首先在an...
- 工作中有大量的cvs文件,需要导入到一个工作表中进行分列,每个导入csv的数据到同一个sheet里要与前一个c...