在對重要數據進行備份或遷移操作前,為確保備份全面無遺漏,且合理規劃目標存儲設備的空間,會將文件名和內存提取到 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、內存使用率持續居高不下)、提取速度異常緩慢或出現報錯提示,這時應該立即暫停操作,排查問題。