自动获取文件的内存大小怎么设置?批量获取文件名和内存大小到Excel中的方法
在对重要数据进行备份或迁移操作前,为确保备份全面无遗漏,且合理规划目标存储设备的空间,会将文件名和内存提取到 Excel。比如,某个部门要将旧电脑中的文件迁移到新服务器,提前整理文件信息,能清晰知道所需存储容量,避免迁移过程中因空间不足出现问题。
一、使用 Python 实现
Python 有丰富的库可以实现该功能,使用os库获取文件信息,openpyxl库操作 Excel,以下是示例代码:
import os
from openpyxl import Workbook# 指定文件夹路径
folder_path = '你的文件所在文件夹路径'# 创建Excel工作簿和工作表
workbook = Workbook()
sheet = workbook.active
# 添加表头
sheet.append(['文件名', '内存大小(字节)'])# 遍历文件夹中的文件
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path)
sheet.append([file, file_size])# 保存Excel文件
workbook.save('文件信息.xlsx')
将'你的文件所在文件夹路径'替换为实际存放 PDF 或 jpg 长图文件的文件夹路径,运行代码后,会在当前目录生成名为文件信息.xlsx的 Excel 文件,里面包含文件名和内存大小信息。
二、node.js也是可以帮我们批量获取文件名称和大小并存放到对应的Excel中
1、首先安装必要的依赖:npm install xlsx
2、运行脚本:node file_size_excel.js [目录路径] [输出文件路径
3、如果不提供参数,脚本默认扫描当前目录并输出到 "文件信息.xlsx"
示例代码如下:
const fs = require('fs');
const path = require('path');
const XLSX = require('xlsx');// 将字节转换为人类可读的格式
function formatBytes(bytes, decimals = 2) {
if (bytes === 0) return '0 Bytes';const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}// 递归获取目录中所有文件的信息
async function getFilesInfo(dirPath) {
return new Promise((resolve, reject) => {
fs.readdir(dirPath, { withFileTypes: true }, (err, entries) => {
if (err) {
reject(err);
return;
}const filesInfo = [];
const promises = entries.map(entry => {
const entryPath = path.join(dirPath, entry.name);if (entry.isDirectory()) {
return getFilesInfo(entryPath).then(subFiles => {
filesInfo.push(...subFiles);
});
} else {
return new Promise((res, rej) => {
fs.stat(entryPath, (err, stats) => {
if (err) {
rej(err);
return;
}filesInfo.push({
name: entry.name,
path: entryPath,
size: stats.size,
sizeFormatted: formatBytes(stats.size)
});
res();
});
});
}
});Promise.all(promises)
.then(() => resolve(filesInfo))
.catch(reject);
});
});
}// 将文件信息导出到Excel
function exportToExcel(filesInfo, outputPath) {
// 转换数据格式以适应SheetJS
const worksheetData = [
['文件名', '文件路径', '大小(字节)', '大小(可读格式)'],
...filesInfo.map(file => [file.name, file.path, file.size, file.sizeFormatted])
];// 创建工作表
const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);// 创建工作簿并添加工作表
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, '文件信息');// 保存工作簿到文件
XLSX.writeFile(workbook, outputPath);
console.log(`已成功导出到 ${outputPath}`);
}// 主函数
async function main() {
try {
// 获取命令行参数
const directoryPath = process.argv[2] || '.';
const outputFilePath = process.argv[3] || '文件信息.xlsx';// 验证目录是否存在
if (!fs.existsSync(directoryPath)) {
console.error(`错误: 目录 ${directoryPath} 不存在`);
process.exit(1);
}// 获取文件信息
console.log(`正在扫描目录: ${directoryPath}`);
const filesInfo = await getFilesInfo(directoryPath);
console.log(`共找到 ${filesInfo.length} 个文件`);// 导出到Excel
exportToExcel(filesInfo, outputFilePath);
} catch (error) {
console.error('发生错误:', error.message);
process.exit(1);
}
}// 执行主函数
main();
三、上面介绍的是用编程的方式获取文件名和其对应的内存大小存放到Excel中,如果我们不懂编程就可以使用界面话的工具进行获取。这里介绍使用“汇帮文件名提取器”软件来获取。
在进行文件信息提取操作前,务必对重要文件和数据进行备份。即使操作过程看似简单,也可能因误操作、软件漏洞或系统异常导致文件丢失或损坏。如在使用命令行提取文件内存大小时,若输入错误指令,可能意外删除文件,备份可避免数据损失。对于大规模文件信息提取任务,要实时监控操作进程。若发现系统资源占用过高(如 CPU、内存使用率持续居高不下)、提取速度异常缓慢或出现报错提示,这时应该立即暂停操作,排查问题。