You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Node.js获取Windows右键文件属性详情中的各类信息?

如何通过Node.js获取Windows文件的详细属性

是的,Node.js可以获取Windows文件「详细信息」标签页中的那些扩展属性,fs.stat()只能提供文件系统层面的基础信息(如大小、创建时间),无法访问这类元数据。以下是两种可行的方案:

方案一:使用PowerShell命令(无需额外依赖)

Windows的PowerShell原生支持读取文件的扩展属性,你可以通过Node.js的child_process模块调用PowerShell命令,解析输出结果。

示例代码:

const { exec } = require('child_process');

function getFileDetails(filePath) {
  // PowerShell命令:获取指定文件的目标属性并转为JSON格式
  const psCommand = `Get-ItemProperty -Path "${filePath.replace(/"/g, '""')}" | Select-Object -Property Title, Subtitle, Rating, Length, BitRate, Size, DirectoryName, Extension | ConvertTo-Json`;

  return new Promise((resolve, reject) => {
    exec(`powershell.exe -Command "${psCommand}"`, (error, stdout, stderr) => {
      if (error) {
        reject(stderr);
        return;
      }
      try {
        const details = JSON.parse(stdout);
        resolve(details);
      } catch (parseError) {
        reject(parseError);
      }
    });
  });
}

// 使用示例
getFileDetails('C:\\example\\video.mp4')
  .then(details => console.log(details))
  .catch(err => console.error(err));

说明:

  • 对文件路径中的双引号进行转义,避免命令执行出错
  • 不同类型的文件(如视频、文档、图片)支持的属性可能不同,需根据文件类型调整Select-Object中的属性列表
  • ConvertTo-Json将PowerShell输出转为JSON格式,方便Node.js直接解析

方案二:使用第三方npm包

部分npm包封装了Windows原生API,可更直接地读取文件元数据,例如:

  • exiftool-vendored:适用于读取图片、视频、音频等媒体文件的详细元数据(包括时长、比特率、标题等)
  • win32-file-properties:专门针对Windows文件属性的包,支持读取各类扩展属性

示例(使用exiftool-vendored):

const exiftool = require('exiftool-vendored').exiftool;

async function getMediaDetails(filePath) {
  const metadata = await exiftool.read(filePath);
  return {
    title: metadata.Title,
    subtitle: metadata.Subtitle,
    duration: metadata.Duration,
    bitrate: metadata.AudioBitrate || metadata.VideoBitrate,
    size: metadata.FileSize,
    directory: metadata.Directory,
    type: metadata.FileType
  };
}

// 使用示例
getMediaDetails('C:\\example\\audio.mp3')
  .then(details => console.log(details))
  .catch(err => console.error(err));

注意:使用第三方包时需先通过npm install安装对应依赖,且部分包可能仅支持特定类型的文件。

内容的提问来源于stack exchange,提问作者Alteria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:32:12