feat: 批量解压缩
parent
fd21ca5e77
commit
a5ff1ceec4
@ -0,0 +1,36 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const AdmZip = require('adm-zip');
|
||||||
|
const { getInputDir } = require('../utils/index');
|
||||||
|
|
||||||
|
//工作目录文件夹路径
|
||||||
|
const inputDir = getInputDir();
|
||||||
|
if (!inputDir) {
|
||||||
|
console.log('未执行批量解压功能,工作目录不存在');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//解压后输出文件夹
|
||||||
|
const outputDir = `${inputDir}/unzip`;
|
||||||
|
if (!fs.existsSync(outputDir)) {
|
||||||
|
fs.mkdirSync(outputDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function unzip() {
|
||||||
|
// 读取源文件夹中的所有文件,并获取文件类型
|
||||||
|
const entries = fs.readdirSync(inputDir, { withFileTypes: true });
|
||||||
|
|
||||||
|
// 过滤出所有 ZIP 文件
|
||||||
|
const zipFiles = entries.filter((entry) => entry.isFile() && path.extname(entry.name) === '.zip').map((entry) => entry.name); // 只获取文件名
|
||||||
|
|
||||||
|
zipFiles.forEach((zipFile) => {
|
||||||
|
const zipFilePath = path.join(inputDir, zipFile);
|
||||||
|
const zip = new AdmZip(zipFilePath);
|
||||||
|
|
||||||
|
// 解压到指定输出文件夹
|
||||||
|
zip.extractAllTo(outputDir, true);
|
||||||
|
console.log(`已解压: ${zipFile} 到 ${outputDir}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
unzip();
|
||||||
Loading…
Reference in New Issue