Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 请参见文件上的元数据变量名称(Windows 10)_Powershell_Windows 10_Metadata_File Extension - Fatal编程技术网

Powershell 请参见文件上的元数据变量名称(Windows 10)

Powershell 请参见文件上的元数据变量名称(Windows 10),powershell,windows-10,metadata,file-extension,Powershell,Windows 10,Metadata,File Extension,我很难定义这个问题,但基本上我想知道的是“连接到文件元数据的符号变量名是什么(最好是在Windows安装上)”。 例如,以.mp3文件为例,检查其属性会生成标题、比特率、文件夹路径等描述。我想知道的是程序看到的字段的名称(即Title->Title,Bit Rate->Bit_Rate等),如果有意义的话,因为我一直在尝试索引一些文件,我想收集尽可能多的关于它们的信息。我不相信元数据中有“符号名”这样的东西,尤其是与PowerShell无关。我怀疑Windows支持一定数量的流行格式,并通过资源

我很难定义这个问题,但基本上我想知道的是“连接到文件元数据的符号变量名是什么(最好是在Windows安装上)”。
例如,以
.mp3
文件为例,检查其属性会生成标题、比特率、文件夹路径等描述。我想知道的是程序看到的字段的名称(即Title->Title,Bit Rate->Bit_Rate等),如果有意义的话,因为我一直在尝试索引一些文件,我想收集尽可能多的关于它们的信息。

我不相信元数据中有“符号名”这样的东西,尤其是与PowerShell无关。我怀疑Windows支持一定数量的流行格式,并通过资源管理器提供查看和有时编辑这些格式的功能。我还没有找到一个来源来证明这一理论,但研究间接地支持了这一理论:有几十个关于如何在PowerShell中检索文件元数据的搜索结果,它们似乎都提出了大致相同的方法(例如):使用Shell对象来收集信息

既然你给这个PowerShell贴上了标签,下面是我对将它浓缩到基本要素的看法:

$path = 'C:\temp\file.txt' # pick a path
$parent = Split-Path -Parent $path # get the directory
$shell = New-Object -ComObject Shell.Application # get ourselves a shell
$folder = $shell.NameSpace($parent) # get a "folder namespace"
$file = $Folder.Items() | where { $_.Path -eq $path } # get the file itself from the folder
$count = 0 # zero our iterator
$object = New-Object PSObject # make a fresh object to hold our output
While ($folder.GetDetailsOf($folder.Items, $count) -ne "") { # iterate over the available metadata tags for the folder, and for each one get the value from the file
    $object | Add-Member -Force NoteProperty ($folder.GetDetailsOf($folder.Items, $count)) ($folder.GetDetailsOf($file, $count))
    $count += 1
}
Write-Output $object
请注意,给定文件的可用属性显然不是任何文件可能支持的所有属性,此外,也不一定是“符号名”。我怀疑查询shell对象的过程会导致它检查文件夹中的文件并提取Windows可以识别的元数据——它甚至可能根据为文件夹选择的视图类型(照片、音乐、文档等)来执行此操作


至于编写信息,这可能是通过同一个shell对象实现的,但我还没有探讨过这个选项。这可能取决于具体的格式:对于mp3,您可能需要一个库来查看/编辑特定于mp3的元数据。

这与我想要的不完全一样,但我想这更像是我的问题提出得不好。非常感谢,无论如何,这似乎对我想做好的其他事情有用。我想很难解释清楚我想要的是什么,因为这更像是一个依赖于坚果的问题,但我想我可以解决这个问题。