将新的元数据属性添加到文件中

use*_*378 14 c# powershell metadata

我想为一些文件添加一些元数据属性.就像doc文件的所有者,计算机,标题,主题等一样,我希望能够添加一些自定义属性.怎么办?

jAC*_*jAC 13

如前所述,它取决于文件系统.所以这只适用于NTFS.

一种方法是创建ADS流:请参阅编辑历史记录.

另一种方法是使用DSOFile-Library,它仅适用于Office文件.但它适用于每个文件.

首先在这里下载库(x64 + x86):DOWNLOAD

重要说明: 由于DSO OLE是32位DLL,因此只有在将编译目标CPU设置为x86时才能工作.否则会抛出异常. 还有一个64位版本可用:如何在c#中读取自定义文件属性

然后在项目中创建对COM DLL的引用(右键单击解决方案 - >添加引用 - > COM选项卡 - >添加"DSO OLE文档属性读取器v2.1")并使用命名空间:

using DSOFile;
Run Code Online (Sandbox Code Playgroud)

之后,您可以创建自己的属性:

首先打开文件:

OleDocumentProperties myFile = new DSOFile.OleDocumentProperties();
myFile.Open(@"MYPATHHERE", false, DSOFile.dsoFileOpenOptions.dsoOptionDefault);
Run Code Online (Sandbox Code Playgroud)

为yourValue创建一个对象: object yourValue = "Your Value";

然后检查是否已经存在您要创建的属性:

foreach (DSOFile.CustomProperty property in myFile.CustomProperties)
{
   if (property.Name == "Your Property Name"){
      //Property exists
      //End the task here (return;) oder edit the property
      property.set_Value(yourValue);
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在检查现有属性后,您可以添加属性:

myFile.CustomProperties.Add("Your Property Name", ref yourValue);
Run Code Online (Sandbox Code Playgroud)

要完成任务,请保存并关闭文件:

myFile.Save();
myFile.Close(true);
Run Code Online (Sandbox Code Playgroud)

您可以在我的主页上下载示例项目.

现在到了在资源管理器中显示属性的部分.

您必须为此创建一个shell扩展.有关更多信息,请访问Codeproject页面.

我创建了一个,你可以在这里下载.但是你必须再次签名(在所提到的页面上寻找"操作方法").

右键单击.css/.js/.txt文件时,它看起来像这样: 使用Sharpshell进行Shell扩展
或者创建自己的属性选项卡:
CustomPropertiesTab
您可以在此处下载示例:下载

有关Dsofile.dll和其他源的详细信息,请参阅Microsoft Dsofile.dll