首页 > 解决方案 > 从文件属性中检索标签列表

问题描述

我想以编程方式检索附加到 Windows 7 中文件的标签列表。我正在尝试创建可以跨不同平台移动的文件->标签的映射。

有人知道图书馆,或者从命令行获取“标签”值的方法吗?到目前为止,我只能找到获取基本文件属性的方法,例如作者、创建日期等。

不幸的是,我无法在计算机上加载 PowerShell 脚本,因此无法使用这些功能。

我尝试使用'UserDefinedFileAttributeView',但没有返回任何值,如下所示:

   private LinkedList<String> windowsGetAllFileTags(File file) {

    UserDefinedFileAttributeView fileAttributeView = Files.getFileAttributeView(file.toPath().toAbsolutePath(), UserDefinedFileAttributeView.class);
    List<String> allAttributes = null;
    try {
        allAttributes = fileAttributeView.list();
    } catch (IOException e) {
        e.printStackTrace();
    }
    for(String attribute : allAttributes) {
        System.out.println("Attribute = " + attribute);
    }
    return null;
}

Windows 7 属性视图的图像

标签: javawindows

解决方案


在 Windows PowerShell 中,您可以通过以下方式获取PresentationCore.dll

function Get-ImageTags {
  param(
    [string]$Path
  )

  Add-Type -AssemblyName PresentationCore

  try {
    $FileStream = (Get-Item $Path).Open('Open','Read')
    $BitmapFrame = [System.Windows.Media.Imaging.BitmapFrame]::Create($FileStream)
    $Tags = @($BitmapFrame.Metadata.Keywords |%{ $_ })
  }
  catch {
    throw
    return
  }
  finally {
    if($FileStream){
      $FileStream.Dispose()
    }
  }
  return $Tags
}

然后像这样使用:

$Tags = Get-ImageTags -Path path\to\file.jpeg

$Tags变量现在将包含一个标签数组


推荐阅读